运行 SQL 通过 Wix 使用 <sql:SqlScript> 元素的脚本文件
Running SQL Script file through Wix using <sql:SqlScript> element
我是 Wix 安装程序的新手。我有一个要求,我必须提供 SQL 服务器登录凭据和 运行 来自特定路径的脚本。
我不明白发生了什么事 wrong.The 项目构建成功并创建了 .msi。在 运行 之后我得到以下错误:
错误 26204。错误 -2147217900:无法执行 SQL 字符串,错误详细信息:'»' 附近的语法不正确。,SQL 键:CreateUpsizingDatabase SQL string: print convert(varchar(25),GetDate(),121) + ' 执行文件:SqlTest.sql'
我的Sql脚本文件如下:
print convert(varchar(25),GetDate(),121) + '执行文件:SqlTest.sql'
下面是我的代码:
<?xml version="1.0" encoding="UTF-8"?>
<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 Id="*" Name="SqlTest" Language="1033" Version="1.0.0.0" Manufacturer="BLRSCCMCAS01" UpgradeCode="0931a445-07bf-4494-b130-a1f96155021f">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SqlTest" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<Binary Id="CreateUpsizingDatabase" SourceFile="C:\Temp\SqlTest.sql" />
<util:User Id="SQLUser" Name="[User]" Password="[Password]" />
<sql:SqlDatabase Id="SqlDatabase" Database="[MyDb]" Server="[Server]" User="SQLUser" />
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SqlTest" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="SqlComponent" Guid="15CCE46E-8EA5-42CA-80C5-AC3DB30A9716">
<sql:SqlScript Id="CreateDatabases" SqlDb="SqlDatabase" ExecuteOnInstall="yes" BinaryKey="CreateUpsizingDatabase" />
<CreateFolder/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
你好像有一个 UTF8 BOM ()。尝试使用 visual studio.
中的高级保存选项将文件保存为 "Unicode (UTF8 Without signature)"
我遇到了同样的错误,UTF8 带或不带签名都失败了。
我认为我们的脚本字符串中的字符导致了问题(在我的例子中,我包含了一些中文字符)。
我尝试从 sql 服务器重新生成 sql 脚本,并将此文件保存为 ANSI 格式。有用!
我做了一些查询,中文字符在 sql 服务器中是正确的。
我是 Wix 安装程序的新手。我有一个要求,我必须提供 SQL 服务器登录凭据和 运行 来自特定路径的脚本。
我不明白发生了什么事 wrong.The 项目构建成功并创建了 .msi。在 运行 之后我得到以下错误:
错误 26204。错误 -2147217900:无法执行 SQL 字符串,错误详细信息:'»' 附近的语法不正确。,SQL 键:CreateUpsizingDatabase SQL string: print convert(varchar(25),GetDate(),121) + ' 执行文件:SqlTest.sql'
我的Sql脚本文件如下:
print convert(varchar(25),GetDate(),121) + '执行文件:SqlTest.sql'
下面是我的代码:
<?xml version="1.0" encoding="UTF-8"?>
<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 Id="*" Name="SqlTest" Language="1033" Version="1.0.0.0" Manufacturer="BLRSCCMCAS01" UpgradeCode="0931a445-07bf-4494-b130-a1f96155021f">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SqlTest" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<Binary Id="CreateUpsizingDatabase" SourceFile="C:\Temp\SqlTest.sql" />
<util:User Id="SQLUser" Name="[User]" Password="[Password]" />
<sql:SqlDatabase Id="SqlDatabase" Database="[MyDb]" Server="[Server]" User="SQLUser" />
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SqlTest" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="SqlComponent" Guid="15CCE46E-8EA5-42CA-80C5-AC3DB30A9716">
<sql:SqlScript Id="CreateDatabases" SqlDb="SqlDatabase" ExecuteOnInstall="yes" BinaryKey="CreateUpsizingDatabase" />
<CreateFolder/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
你好像有一个 UTF8 BOM ()。尝试使用 visual studio.
中的高级保存选项将文件保存为 "Unicode (UTF8 Without signature)"我遇到了同样的错误,UTF8 带或不带签名都失败了。 我认为我们的脚本字符串中的字符导致了问题(在我的例子中,我包含了一些中文字符)。
我尝试从 sql 服务器重新生成 sql 脚本,并将此文件保存为 ANSI 格式。有用! 我做了一些查询,中文字符在 sql 服务器中是正确的。