我有這個類,我試圖從執行我的腳本:執行一個錯誤從C#結果的SQL腳本
using System;
using System.Data.SqlClient;
using System.IO;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
using SSS.ServicesConfig.MiscClasses;
namespace SSS.ServicesConfig.sqlchanges
{
internal static class ExecuteScript
{
public static Status Execute(SqlConnection con, string scripttoexecute)
{
var status = new Status();
try
{
var file = new FileInfo(scripttoexecute);
var script = file.OpenText().ReadToEnd();
var server = new Server(new ServerConnection(con));
server.ConnectionContext.ExecuteNonQuery(script);
file.OpenText().Close();
status.IsSuccess = true;
status.Message = "Success!";
return status;
}
catch (Exception ex)
{
status.Message = ex.Message;
status.IsSuccess = false;
return status;
}
}
}
}
它正在執行一個SQL腳本,通過SSMS創建的,是我在項目設置爲每次複製。
我得到這個消息:
混合模式組件對版本內置的 運行時的「V2.0.50727,且不能在4.0運行時無需額外 配置信息被加載。
我檢查我的項目中的每一個,他們使用的是.NET Framework 4中,我得到在這條線以下消息:
server.ConnectionContext.ExecuteNonQuery(script);
難道說我的.sql文件不是淨4.0文件?我不確定我是否明白這是指的是運行2.0。
任何想法?
編輯#1
這是我的.sql文件的開頭是否有幫助。我可以張貼整個事情,但它是真實的基礎,只是創建表屈指可數:
USE [master]
GO
/****** Object: Database [SuburbanPps] Script Date: 4/7/2014 2:00:12 PM ******/
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'SuburbanPps')
BEGIN
CREATE DATABASE [SuburbanPps] ON PRIMARY
(NAME = N'SuburbanPps', SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB)
LOG ON
(NAME = N'SuburbanPps_log', SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
END
GO
ALTER DATABASE [SuburbanPps] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [SuburbanPps].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [SuburbanPps] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [SuburbanPps] SET ANSI_NULLS OFF
GO
ALTER DATABASE [SuburbanPps] SET ANSI_PADDING OFF
GO
ALTER DATABASE [SuburbanPps] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [SuburbanPps] SET ARITHABORT OFF
GO
編輯#2
我相信這是Microsoft.SqlServer.ConnectionInfo
因爲它的版本是V2.0.50727,它匹配以上版本。
編輯#3
好吧,我在這混亂。我本來以爲,當我加入Microsoft.SqlServer.ConnectionInfo
,我是加入.NET 4.0版本,從下面的圖片所示:
那是不正確的?如果我不需要安裝我的應用程序,我寧願不需要兩個不同的框架。或者......我真的很困惑發生了什麼事情?
這不只是這一問題的工作,而不是圍繞一個真正的解決:
<startup useLegacyV2RuntimeActivationPolicy="true">
它似乎並不關係到你的sql腳本的。 – Crono
我不認爲這會......我只是不明白它指的是什麼。 – ErocM
這看起來像你的一個組件沒有運行與其他組件相同的框架,也許你的sql服務器驅動程序不是最新的。 – paqogomez