从运行应用程序在C#中使用SMO库.sql文件(Run .sql file from Applica

2019-07-30 05:15发布

我建立在C#中的Visual Studio 2012 RC的应用。

我要运行的应用程序中的脚本。 为此我使用。 这两个库。 我的应用程序的目标.NET框架4.5。

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

我写的代码检查气象数据库的存在与否后运行的脚本。

当我运行代码的意外的异常弹出。 我真的知道是什么意思。 你能帮我为了摆脱这种异常。

我附上我的代码和异常预览也。

请帮我...我用Google太多了。

**Here are the Exception Details.**

System.IO.FileLoadException了未处理的HResult = -2146232799消息=混合模式组件被构建针对运行时的版本“V2.0.50727”,并且不能在没有额外的配置信息的4.0运行时加载。 源= mscorlib程序堆栈跟踪:在System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly组件,字符串名称,布尔throwOnError,布尔IGNORECASE,ObjectHandleOnStack型)在System.Reflection.RuntimeAssembly.GetType(字符串名称,布尔throwOnError,布尔IGNORECASE)在系统。 Reflection.Assembly.GetType(字符串名称,布尔throwOnError)在Microsoft.SqlServer.Management.Common.ServerConnection.GetStatements(查询字符串,ExecutionTypes executionType,的Int32&statementsToReverse)在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字符串的SqlCommand, ExecutionTypes executionType)在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字符串的SqlCommand)在McFarlaneIndustriesPOSnamespace.SplashScreen.CreateDatabase()在E:\销售源代码\ McFarlaneIndustries \ SplashScreen.cs作品\麦克法兰工业\麦克法兰工业点:在McFarlaneIndustriesPOSnamespace.SplashScreen.splashScreenTimer_Tick(对象发件人,EventArgs e行139 在e)中:\塞尔源代码\ McFarlaneIndustries \ SplashScreen.cs作品\麦克法兰工业\麦克法兰工业点:线159在System.Windows.Forms.Timer.OnTick(EventArgs e)上System.Windows.Forms.Timer.TimerNativeWindow .WndProc(消息&m)上System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr的的HWND,MSG的Int32,IntPtr的WPARAM,IntPtr的LPARAM)在System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&MSG)在System.Windows.Forms的。 Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr的dwComponentID,的Int32原因,的Int32 pvLoopData)在System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(的Int32原因,ApplicationContext的上下文)在System.Windows.Forms的.Application.ThreadContext.RunMessageLoop(的Int32原因,ApplicationContext的上下文)在System.Windows.Forms.Application.Run(表格的MainForm)在McFarlaneIndustriesPOSnamespace.Program.Main()中E:\ S作品\麦克法兰工业\麦克法兰工业点 ALE源代码\ McFarlaneIndustries \ Program.cs的:线19在System.AppDomain._nExecuteAssembly(RuntimeAssembly组件,字串[] args)在System.AppDomain.nExecuteAssembly(RuntimeAssembly组件,字串[] args)在System.Runtime.Hosting.ManifestRunner .RUN(布尔checkAptModel)在System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()在System.Runtime.Hosting.ApplicationActivator.CreateInstance(activationContext activationContext,字符串[] activationCustomData)在System.Runtime.Hosting.ApplicationActivator.CreateInstance(activationContext activationContext )在System.Activator.CreateInstance(activationContext activationContext)在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)在System.Threading.ExecutionContext.RunInternal(的ExecutionContext的ExecutionContext,ContextCallback回调,对象状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.Run(EXEC的ExecutionContext utionContext,ContextCallback回调,对象的状态,布尔preserveSyncCtx)在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回调,对象状态)在System.Threading.ThreadHelper.ThreadStart()的InnerException:

Answer 1:

它看起来像你试图加载.NET版本2 Microsoft.SqlServer.xxxx.dll的。 更新引用到.NET4版本(优选),或下面的咒语下添加到你的app.config <configuration>节点

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
  <requiredRuntime version="v4.0" />
</startup>

以允许的.NET 2个组件加载。 见此处查看详情 。



文章来源: Run .sql file from Application in C# using SMO library