2015-02-06 25 views
2

對於Wix Installer.I有一個新要求,我必須提供SQL Server登錄憑據並從特定路徑運行腳本。使用<sql:SqlScript>元素通過Wix運行SQL腳本文件

我沒有得到這是怎麼回事wrong.The項目順利建設和正在的.msi運行created.After它我獲得以下錯誤:

錯誤26204.錯誤-2147217900:未能執行SQL字符串,錯誤詳細:SQL語句附近的錯誤語法SQL鍵:CreateUpsizingDatabase SQL字符串:print convert(varchar(25),GetDate(),121)+'Executing file:SqlTest.sql'

My Sql Script文件如下:

print convert(varchar(25),GetDate(),121)+'執行文件:Sq lTest.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> 

回答

3

它看起來像你有一個UTF8 BOM()那裏。嘗試使用visual studio中的高級保存選項將文件保存爲「Unicode(UTF8無簽名)」。

+2

感謝的人......你對解決it..No更改它上面的代碼中表現出了良好引導方向......只是如果在Visual創建SQL腳本文件工作室在我的情況VS12 ...它應該被保存爲選項編碼沒有簽名..如果在SSMS文件中創建SSMS不需要做任何簡單的保存... – SuryaSan 2015-02-09 07:18:46

0

我得到了同樣的錯誤,有或沒有簽名的UTF8都失敗了。 我認爲腳本字符串中的字符會導致問題(在我的情況中,我包含了一些中文字符)。

我試圖從sql server重新生成sql腳本,並將其保存爲ANSI格式。有用! 我做了一些查詢,中文字符在sql server中是正確的。

你可能要參考的文章:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Error-executing-sql-scripts-with-WIX-td1488703.html