Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何运行sql脚本使用Wix创建数据库_Database_Wix - Fatal编程技术网

Database 如何运行sql脚本使用Wix创建数据库

Database 如何运行sql脚本使用Wix创建数据库,database,wix,Database,Wix,我在使用Wix创建数据库时遇到问题。我可以找到的示例(参见下面的链接)都是首先使用wix创建数据库,然后运行CREATETABLESQL脚本。问题是,我需要将wix设置为使用createdatabase运行sql脚本来创建数据库和表,而不是首先使用.wxs文件中的SqlDatabase标记来创建数据库。在Wix中可以这样做吗?我正在使用SQLServerExpress。任何关于如何做到这一点的例子都会很有帮助 sql脚本示例: CREATE DATABASE My_DB CREATE TABL

我在使用Wix创建数据库时遇到问题。我可以找到的示例(参见下面的链接)都是首先使用wix创建数据库,然后运行CREATETABLESQL脚本。问题是,我需要将wix设置为使用createdatabase运行sql脚本来创建数据库和表,而不是首先使用.wxs文件中的SqlDatabase标记来创建数据库。在Wix中可以这样做吗?我正在使用SQLServerExpress。任何关于如何做到这一点的例子都会很有帮助

sql脚本示例:

CREATE DATABASE My_DB
CREATE TABLE Test (Value1 CHAR(50), Value2 INTEGER)
CREATE INDEX TestIndex ON Test (Value1)

提前谢谢。非常感谢您的帮助。

您需要有
SqlDatabase
标签。没有它,安装程序将永远不知道脚本必须在哪个服务器和数据库上运行。但是,您可以将
CreateOnInstall
droponninstall
(您可能需要三个
CreateOnX
和三个
DropOnX
)设置为
no
,以防止自动创建或删除数据库


请注意,如果执行此操作,则应提供一个在回滚时运行的
SqlScript
,以便在安装程序失败时删除数据库。这通常是使用
SqlDatabase
标记自动完成的。

为什么不使用包含SQL代码的脚本文件来创建数据库呢

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
  <Product Name='SQL app 1.0' Id='DB501C18-86C7-4D14-AEC0-86416A69ABDE' Language='1033' Codepage='1252'
     Version='1.0.0' Manufacturer='ABC Ltd.'>
            <Package Id='????????-????-????-????-????????????' Keywords='Installer' Description="SQL App 1.0 Installer"
              Comments='Comment.' Manufacturer='ABC Ltd.' InstallerVersion='100'
              Languages='1033' Compressed='yes' SummaryCodepage='1252' />
        <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' />
        <User Id="MySQLUser" Name="[SQLUSER]" Password="[SQLUSERPASSWORD]"></User>
        <Directory Id='TARGETDIR' Name='SourceDir'>
            <Directory Id='ProgramFilesFolder' Name='PFiles'>
                <Directory Id='INSTALLDIR' Name='TestSQL'>
                      <Component Id="MySqlComponent" Guid="C50999A0-02FD-42d5-9F65-7375318DD328">
                        <SqlDatabase Id="MySqlDatabase" Database="MyDatabase" Server="[SQLSERVER]" Instance="[SQLINSTANCE]"
                            CreateOnInstall="yes" DropOnUninstall="yes" User="MySQLUser" ContinueOnError="yes">
                              <SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateTablesBin"></SqlScript>
                        </SqlDatabase>
                      </Component>
                </Directory>
             </Directory>
         </Directory>
        <Binary Id="CreateTablesBin" src="CreateDatabase.sql"></Binary>
        <Feature Id='Complete' Level='1' Description="Full" Title="Full Installation">
            <ComponentRef Id='MySqlComponent' />
        </Feature>
    </Product>
</Wix>