我在 32 位 Win7 机器上开发了一个 Windows Forms 应用程序,并在同一台机器上安装了一个 SQL Server 2008 进行测试。发布环境的数据库服务器有64位。当我在与 64 位 SQL Server 连接的发布环境中的客户端(32 位)上安装应用程序时,当我的代码尝试使用 SQL Server 管理对象(SMO)时出现以下故障:
导致失败的代码:
private static bool createDatabase(string dbName, string sqlPath, string connStr)
{
FileInfo file = new FileInfo(sqlPath + dbName + ".sql");
string strscript = file.OpenText().ReadToEnd();
bool result;
string test = "CREATE DATABASE [" + dbName + "]";
try
{
SqlConnection connection = new SqlConnection(connStr);
using (connection)
{
using (SqlCommand sqlCmd = new SqlCommand(test, connection))
{
connection.Open();
sqlCmd.ExecuteNonQuery();
connection.Close();
result = true;
}
}
if (result == true)
{
connStr = connStr + ";Initial Catalog=" + dbName;
SqlConnection sqlConnection = new SqlConnection(connStr);
ServerConnection svrConnection = new ServerConnection(sqlConnection);
Server server = new Server(svrConnection);
server.ConnectionContext.ExecuteNonQuery(strscript); // Here the app crashes
}
}
catch (SqlException ae)
{
result = false;
System.Windows.Forms.MessageBox.Show(ae.Message.ToString());
}
return result;
}
失败信息:
应用程序:XingaAdmin.exe 框架版本:v4.0.30319 应用程序:Der Prozess wurde aufgrund einer unbehandelten Ausnahme bedet。Ausnahmeinformationen: System.IO.FileNotFoundException Stapel: bei System.Reflection.RuntimeAssembly._nLoad(System.Reflection.AssemblyName, System.String, System.Security.Policy.Evidence, System.Reflection.RuntimeAssembly, System.Threading.StackCrawlMark ByRef, Boolean , Boolean, Boolean) bei System.Reflection.RuntimeAssembly.nLoad(System.Reflection.AssemblyName, System.String, System.Security.Policy.Evidence, System.Reflection.RuntimeAssembly, System.Threading.StackCrawlMark ByRef, Boolean, Boolean, Boolean ) bei System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(System.Reflection.AssemblyName, System.Security.Policy.Evidence, System.Threading.StackCrawlMark ByRef, Boolean, Boolean) bei System.Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery (System.String, Microsoft.SqlServer.Management.Common.ExecutionTypes) bei XingaCommonClasses.Utilities.Database.DatabaseHelper.createDatabase(System.String, System.String, System.String) bei XingaCommonClasses.Utilities.Database.DatabaseHelper.checkDatabase(System.Collections.Generic.List`1, System.String) bei XingaAdmin.Program.Main()
数据库创建良好,但没有执行创建表的 sql 脚本。
我是否可能必须使用 64 位版本的 SQL Server 管理对象 (SMO)?但是,如果,我怎样才能得到这个版本。我无法在 32 位机器上安装 64 位版本。