If you place the SqlDatabase element under a Component element that will attempt to create the database. My SqlDatabase element is a direct child of one of my Fragment elements. It is a little confusing but that causes the SqlDatabase element to search for an existing database. Unfortunate naming a long time ago that hasn't been straightened out.
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Tim Fisher Sent: Friday, June 06, 2008 06:09 To: WiX-users Subject: Re: [WiX-users] Attach a database When I do it that way, I get a compile-time "Error 1 When nested under a component, the sql:SqlDatabase element must have one of the following attributes specified: CreateOnInstall, CreateOnUninstall, DropOnInstall or DropOnUninstall." Is the v3 WixSqlExtension ready, or should I be using something else to do this? Tim On Thu, Jun 5, 2008 at 8:45 PM, Rob Mensching <[EMAIL PROTECTED]> wrote: > At the top of the Fragment: > > <SqlDatabase Id="LocalMasterDB" Server="(local)" Database="master" /> > > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Tim Fisher > Sent: Thursday, June 05, 2008 16:53 > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] Attach a database > > Can you show the definition for your LocalMasterDB element? > > Tim > > > On Thu, Jun 5, 2008 at 1:35 PM, Rob Mensching > <[EMAIL PROTECTED]> wrote: >> 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: wix-users@lists.sourceforge.net >> 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 >> WiX-users@lists.sourceforge.net >> 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 >> WiX-users@lists.sourceforge.net >> 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 > WiX-users@lists.sourceforge.net > 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 > WiX-users@lists.sourceforge.net > 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 WiX-users@lists.sourceforge.net 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 WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users