Thanks David. I got this to work! Seems that putting "USE master;" in
front of the script did the trick. Which makes complete sense now. So
sending your code helped! I appreciate your time! 

Eric 



-----Original Message-----
From: David Reed [mailto:david.r...@microsoft.com] 
Sent: Thursday, January 29, 2009 11:39 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Restoring SQL Database with Sqlstring in WiX v3

I've done restores successfully this way. Profiler will help determine
the call(s) made and more details about why they failed.

Eric, assuming that you're using integrated security, are you sure that
your installer is running elevated at the point where the restore is
attempted?

We've since abandoned BAK files, but here's an example component from
the original RTM AdventureWorks2008 installer from last year:

    <Component Id="C_AdventureWorks2008Backup"
Feature="F_AdventureWorks2008Restore" Directory="INSTALLDIR"
Guid="{15E1D2B7-681F-41D2-8B17-A703317C359B}"
Win64="$(var.PlatformIs64bit)" KeyPath="yes">
      <ReserveCost Id="RC_AdventureWorks2008Backup"
RunFromSource="83886080" RunLocal="83886080" />
      <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL
Server\100\Samples">
        <RegistryValue Name="InstallAdventureWorks2008YN"
Value="[INSTALLADVENTUREWORKS2008YN]" Type="string" />
      </RegistryKey>
      <!--<sql:SqlString
 
Id="SqlString_DropAdventureWorks2008"
                                        SqlDb="SqlDb_Master"
                                        Sequence="5"
                                        ExecuteOnUninstall="yes"
                                        ContinueOnError="yes"
                                        SQL="
USE master;
IF '[INSTALLADVENTUREWORKS2008YN]' = '1'
        BEGIN
                IF EXISTS (SELECT * FROM sys.databases WHERE name =
'AdventureWorks2008')
                        BEGIN
                                EXECUTE (N'ALTER DATABASE
AdventureWorks2008 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;');
                                EXECUTE (N'DROP DATABASE
AdventureWorks2008;');
                        END
        END
" />-->
      <sql:SqlString
                                Id="SqlString_RestoreAdventureWorks2008"
                                SqlDb="SqlDb_Master"
                                Sequence="10"
                                ExecuteOnInstall="yes"
                                ExecuteOnReinstall="yes"
                                ContinueOnError="no"
                                SQL="
IF '[INSTALLADVENTUREWORKS2008YN]' = '1'
        BEGIN
                USE master;
    DECLARE @sql_path nvarchar(256);
                SELECT @sql_path = SUBSTRING(physical_name, 1,
CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                FROM master.sys.master_files WHERE database_id = 1 AND
file_id = 1;
                IF EXISTS (SELECT * FROM sys.databases WHERE name =
'AdventureWorks2008')
                        BEGIN
                                EXECUTE (N'ALTER DATABASE
AdventureWorks2008 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;');
                                EXECUTE (N'DROP DATABASE
AdventureWorks2008;');
                        END
                EXECUTE (N'RESTORE DATABASE AdventureWorks2008
                          FROM DISK =
''[INSTALLDIR]Tools\Samples\AdventureWorks2008.bak''
                          WITH  MOVE ''AdventureWorks2008_Data'' TO N'''
+ @sql_path + N'AdventureWorks2008.mdf'',
                                        MOVE ''AdventureWorks2008_Log''
TO N''' + @sql_path + N'AdventureWorks2008.ldf'',
                                        MOVE ''FileStreamDocuments''
TO N''' + @sql_path + N'Documents'';');
                EXECUTE (N'ALTER DATABASE AdventureWorks2008 SET
NEW_BROKER;');
        END
" />
    </Component>





-----Original Message-----
From: Rob Mensching [mailto:rob.mensch...@microsoft.com]
Sent: Thursday, January 29, 2009 09:05
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Restoring SQL Database with Sqlstring in WiX v3

Not much that is helpful.  When I've had really hard SQL issues, I've
always used the SQL profiler to dig through all the calls and find the
one that is failing.

Note: I have seen successful attaches of database files but never tried
to do a restore from backup.  I always have issues restoring from
backup.

-----Original Message-----
From: Eric Latendresse [mailto:elatendre...@optimum-solutions.com]
Sent: Thursday, January 29, 2009 08:15
To: General discussion for Windows Installer XML toolset.
Subject: [WiX-users] Restoring SQL Database with Sqlstring in WiX v3

Anyone have any suggestions on how to debug this? I have checked the SQL
server logs and there is nothing there pertaining to this WiX error.
Thank you in advance for your help with this.

This is the exact error:
Error -2147217900: failed to execute SQL string, error detail: RESTORE
DATABASE is terminating abnormally., SQL key: RestoreDB SQL string:
RESTORE DATABASE Suite FROM DISK = 'G:\Database\SuiteBlank

This is the WiX code. Creating the database works fine. the error
happens within the SQL String. Running the SQL string in SQL Query
analyzer works as well.

<Component Id="SuiteDatabaseComponent"
Guid="d6e96011-3252-4e85-80b5-b1ff64045e88">
                                <File Id="DatabaseBackup"
Name="SuiteBlank.bak" Source="..\..\Database\Backups\SuiteBlank.bak" />
                                <CreateFolder/>

                                <!-- installs database -->
                                <sql:SqlDatabase Id="db1"
                                  Server="[SQLSERVER]"
Instance="[SQLINSTANCE]" Database="Suite"
                                  CreateOnInstall="yes"
ConfirmOverwrite="yes"
                                  DropOnUninstall="no" User="SQLUser">

                                        <!-- define where the database
files are saved -->
                                        <sql:SqlFileSpec Id="mdf"
                                                Name="Suite_Data"

Filename="[DATABASEDIR]Suite_Data.mdf"
                                                Size="2MB"
GrowthSize="2MB"/>
                                        <sql:SqlLogFileSpec Id="ldf"
                                                Name="Suite_Log"

Filename="[DATABASEDIR]Suite_Log.ldf"/>

                                        </sql:SqlDatabase>

                                <sql:SqlString Id='RestoreDB'
SqlDb='db1' ContinueOnError='no' ExecuteOnInstall='yes'

SQL="RESTORE DATABASE Suite FROM DISK = '[DATABASEDIR]SuiteBlank.bak'
WITH MOVE 'Suite_Data' TO '[DATABASEDIR]Suite_Data.mdf', MOVE
'Suite_Log' TO '[DATABASEDIR]Suite_Log.ldf',REPLACE"/>


                </Component>




Eric



-----Original Message-----
From: Eric Latendresse [mailto:elatendre...@optimum-solutions.com]
Sent: Wednesday, January 28, 2009 9:11 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Creating SQL Database with WiX v3

Is it possible the Sql Database is locked after it creates it? The .mdf
and .ldf file DO get created before the .msi is finished, but maybe
because the .msi isn't complete the files are locked? Just a thought. If
this is the case is there a way around this? TO create the blanks sql
Database, unlock it, then run the restore script?

Eric Latendresse



-----Original Message-----
From: Eric Latendresse [mailto:elatendre...@optimum-solutions.com]
Sent: Wednesday, January 28, 2009 8:59 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Creating SQL Database with WiX v3

Still getting the error and no way to debug? Are there any other
options? This way of restoring a database SHOULD work, right?

Eric


-----Original Message-----
From: Eric Latendresse [mailto:elatendre...@optimum-solutions.com]
Sent: Tuesday, January 27, 2009 8:32 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Creating SQL Database with WiX v3

Yes, The sql server is local. It creates the blank database correctly
and I can see the .mdf and .ldf files at the time of the error. The
backup file is there as well. The problem must be with the restore
script. I can run the script manually and it works fine. Is there
anything that would cause WiX to read the sqlstring wrong? Maybe the
single quotes aren't coming through as they should? Is there a WiX log
or a way to add one so that I can get a more detailed message?

Eric



-----Original Message-----
From: David Reed [mailto:david.r...@microsoft.com]
Sent: Monday, January 26, 2009 3:34 PM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Creating SQL Database with WiX v3

That's often a 404-equivalent. There's usually more info in the server
error log.

        Error -2147217900
        Cannot open backup device '<incorrect_path_2_file.bak>'.
        Device error or device off-line. See the SQL Server error log
for more details.

Make sure the SQL Server process has permissions to that path and that
the file actually exists there.

You are trying to restore to a local server instance, right? Not a
remote server?



-----Original Message-----
From: Eric Latendresse [mailto:elatendre...@optimum-solutions.com]
Sent: Monday, January 26, 2009 13:21
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Creating SQL Database with WiX v3

I tried to restore the database from a backup file during the initial
install and am getting this error below. Is there WiX log or something
where I can get some more info on how to debug this? Below is my code
and I think this should work. Anyone have any ideas? Thanks in advance
for you help.

<Component Id="SuiteDatabaseComponent"
Guid="d6e96011-3252-4e85-80b5-b1ff64045e88">
                                <File Id="DatabaseBackup"
Name="SuiteBlank.bak" Source="..\..\Database\Backups\SuiteBlank.bak" />
                                <CreateFolder/>

                                <!-- installs database -->
                                <sql:SqlDatabase Id="db1"
                                  Server="[SQLSERVER]"
Instance="[SQLINSTANCE]" Database="Suite"
                                  CreateOnInstall="yes"
ConfirmOverwrite="yes"
                                  DropOnUninstall="no" User="SQLUser">

                                        <!-- define where the database
files are saved -->
                                        <sql:SqlFileSpec Id="mdf"
                                                Name="Suite_Data"

Filename="[DATABASEDIR]Suite_Data.mdf"
                                                Size="2MB"
GrowthSize="2MB"/>
                                        <sql:SqlLogFileSpec Id="ldf"
                                                Name="Suite_Log"

Filename="[DATABASEDIR]Suite_Log.ldf"/>

                                        </sql:SqlDatabase>

                                <sql:SqlString Id='RestoreDB'
SqlDb='db1' ContinueOnError='no' ExecuteOnInstall='yes'

SQL="RESTORE DATABASE Suite FROM DISK = '[DATABASEDIR]SuiteBlank.bak'
WITH MOVE 'Suite_Data' TO '[DATABASEDIR]Suite_Data.mdf', MOVE
'Suite_Log' TO '[DATABASEDIR]Suite_Log.ldf',REPLACE"/>


                </Component>



Error -2147217900: failed to execute SQL string, error detail: RESTORE
DATABASE is terminating abnormally., SQL key: RestoreDB SQL string:
RESTORE DATABASE Suite FROM DISK = 'G:\Database\SuiteBlank.bak' WITH
MOVE 'Suite_Data' TO G:\ ...\Suite_Log.ldf',REPLACE

Eric Latendresse



-----Original Message-----
From: David Reed [mailto:david.r...@microsoft.com]
Sent: Friday, January 23, 2009 11:44 PM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Creating SQL Database with WiX v3

It really depends on what those 9k scripts are doing.

If your scripts are a raft of INSERT statements or other transactions,
then you can probably switch to CSVs and bulk load (much faster), which
is what we do with AdventureWorks now for SQL Server 2008 samples. The
WiX3 code for ours is checked into CodePlex here along with the MSBuild
scripts, etc:
http://www.codeplex.com/SqlServerSamples/SourceControl/ListDownloadableC
ommits.aspx

In our experience with AdventureWorks' installers, switching to a
backup/restore is likely to bloat the size of your installer quite a bit
because the BAK files aren't nearly as compressible (if at all) as
script files are...


________________________________________
From: Eric Latendresse [elatendre...@optimum-solutions.com]
Sent: Friday, January 23, 2009 13:10
To: General discussion for Windows Installer XML toolset.
Subject: [WiX-users] Creating SQL Database with WiX v3

I am creating a SQL database with my installer. Right now I have
approximately 9000 scripts to be run after the database is created. This
is taking around 20mins for the install to complete. Is there anything I
can do to speed this process up? I thought about running a  single
script to restore the database from a backup file of the database, but
thought I'd ask if there was a better way.



Eric Latendresse





------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------
------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to