I have something that looks a lot like this (in WiX v2):
<File Id="Baseline.mdf" Name="$(var.ShortPrefix).mdf"
LongName="$(var.LongDBName)_data.mdf"
Source="SourceDir\$(var.LongDBName)Baseline.mdf" />
<File Id="Baseline.ldf" Name="$(var.ShortPrefix).ldf"
LongName="$(var.LongDBName)_log.ldf"
Source="SourceDir\$(var.LongDBName)Baseline.ldf" />
<RemoveFile Id="CleanupDb"
Directory="$(var.PublicLongDBName)_FOLDER" Name="$(var.ShortPrefix)*.*"
LongName="$(var.LongDBName)*.*" On="uninstall" />
<SqlString Id="RollbackDropRoleMember"
SqlDb="LocalMasterDB" RollbackOnUninstall="yes" Sequence="1"
SQL="EXEC $(var.LongDBName).dbo.sp_addrolemember
'db_owner', '$(var.ServiceAccount)'" />
<SqlString Id="DropRoleMember" SqlDb="LocalMasterDB"
ExecuteOnUninstall="yes" Sequence="2" ContinueOnError="yes"
SQL="EXEC
$(var.LongDBName).dbo.sp_droprolemember 'db_owner', '$(var.ServiceAccount)'" />
<SqlString Id="RollbackDropLoginPermissions"
SqlDb="LocalMasterDB" RollbackOnUninstall="yes" Sequence="3"
SQL="EXEC master.dbo.sp_grantlogin
'$(var.ServiceAccount)'" />
<SqlString Id="DropLoginPermissions" SqlDb="LocalMasterDB"
ExecuteOnUninstall="yes" Sequence="4" ContinueOnError="yes"
SQL="EXEC master.dbo.sp_droplogin
'$(var.ServiceAccount)'" />
<SqlString Id="RollbackDetach" SqlDb="LocalMasterDB"
RollbackOnUninstall="yes" ContinueOnError="yes" Sequence="5"
SQL="CREATE DATABASE $(var.LongDBName) ON
(FILENAME=N'[#Baseline.mdf]'), (FILENAME=N'[#Baseline.ldf]') FOR ATTACH" />
<SqlString Id="OfflineDatabase" SqlDb="LocalMasterDB"
ExecuteOnUninstall="yes" ContinueOnError="yes" Sequence="6"
SQL="ALTER DATABASE $(var.LongDBName) SET
OFFLINE WITH ROLLBACK IMMEDIATE" />
<SqlString Id="Detach" SqlDb="LocalMasterDB"
ExecuteOnUninstall="yes" ContinueOnError="yes" Sequence="7"
SQL="EXEC sp_detach_db
@dbname='$(var.LongDBName)', @skipchecks='true'" />
<SqlString Id="Attach" SqlDb="LocalMasterDB"
ExecuteOnInstall="yes" Sequence="8"
SQL="CREATE DATABASE $(var.LongDBName) ON
(FILENAME=N'[#Baseline.mdf]'), (FILENAME=N'[#Baseline.ldf]') FOR ATTACH" />
<SqlString Id="RollbackAttach" SqlDb="LocalMasterDB"
RollbackOnInstall="yes" ContinueOnError="yes" Sequence="9"
SQL="EXEC sp_detach_db
@dbname='$(var.LongDBName)', @skipchecks='true'" />
<SqlString Id="RollbackGrantLoginPermissions"
SqlDb="LocalMasterDB" RollbackOnInstall="yes" Sequence="10"
ContinueOnError="yes"
SQL="EXEC master.dbo.sp_droplogin
'$(var.ServiceAccount)'" />
<SqlString Id="GrantLoginPermissions" SqlDb="LocalMasterDB"
ExecuteOnInstall="yes" Sequence="11"
SQL="IF NOT EXISTS (SELECT * FROM
sys.server_principals WHERE name = N'$(var.ServiceAccount)') EXEC
master.dbo.sp_grantlogin '$(var.ServiceAccount)'; USE $(var.LongDBName); IF
EXISTS(SELECT name FROM sys.sysusers WHERE name=N'$(var.ServiceAccount)') EXEC
$(var.LongDBName).dbo.sp_dropuser '$(var.ServiceAccount)'; EXEC
$(var.LongDBName).dbo.sp_grantdbaccess '$(var.ServiceAccount)'; IF
EXISTS(SELECT name FROM sys.sysusers WHERE name=N'ms') EXEC
$(var.LongDBName).dbo.sp_dropuser 'ms'; EXEC
$(var.LongDBName).dbo.sp_grantdbaccess 'ms'" />
<SqlString Id="RollbackAddRoleMember" SqlDb="LocalMasterDB"
RollbackOnInstall="yes" Sequence="12" ContinueOnError="yes"
SQL="EXEC
$(var.LongDBName).dbo.sp_droprolemember 'db_owner', '$(var.ServiceAccount)'" />
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Tim Fisher
Sent: Thursday, June 05, 2008 08:58
To: [email protected]
Subject: [WiX-users] Attach a database
I'm using WiX 3.0.4130.0 and I'm trying to figure out how to attach a
database. I'm getting a runtime error using this method:
<Component Id="Component2" Guid="c57c91e1-d185-49c1-91f9-fc41a26298a3">
<File Id="MDF" Name="MyDb.mdf" Source="MyDb.mdf" KeyPath="yes"
/>
<File Id="LDF" Name="MyDb_log.ldf" Source="MyDb_log.ldf" />
<sql:SqlDatabase Id="DB1" Server="[DBSERVERNAME]"
Database="[DBNAME]" DropOnUninstall="yes">
<sql:SqlString Id="SqlCmd1" ExecuteOnInstall="yes"
SQL="CREATE
DATABASE [\[][DBNAME][\]] ON (FILENAME=N'[#MDF]') FOR ATTACH" />
</sql:SqlDatabase>
</Component>
The log file looks good, but the error looks like it's trying to
access the database before it's been created or something.
What am I doing wrong?
Tim
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
WiX-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
WiX-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users