2011-12-19 88 views
0

可能重複連接到SQL Server 2008:
Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=4.0.0.0無法表達從C#(VS2010)

我在寫一個C#前端爲一個數據庫第一次嘗試時會很糟糕現在,希望我能得到一些幫助。

我下載並安裝了VS2010(90天試用版)和SQL Server Express 2008 R2的全新副本。我創建了一個名爲MyDB的新數據庫。如果我打開SQL Server配置管理器,我可以看到SQL Server(MyDB)和SQL Server Browser都在運行。我可以使用SQL Server Management Studio連接到服務器,創建新的數據庫,表格等。

在VS中,我導入了System.Data.SqlClient。我創建像這樣

SqlConnection myDatabase = new SqlConnection(@"Data Source=localhost\MyDB;Initial Catalog=main;Trusted_Connection=True"); 

但是一個新的連接,當我嘗試打開它

myDatabase.Open(); 

我得到一個安全異常:

請求類型系統」的權限。 Data.SqlClient.SqlClientPermission,System.Data, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' 失敗。

我讀過一堆相關的SO帖子和在線,但沒有得到更多。我在Config Mgr中啓用了每個協議,我已經無數次地重新啓動了這些服務,我在任何地方添加了用戶權限,並且在連接字符串中使用「user id」和「password」代替受信任的連接。納達。

+0

你創建了什麼樣的C#項目?嘗試一個控制檯程序作爲確定發生的第一步。 – JonnyBoats 2011-12-19 05:29:20

+0

「請參考以下文章來配置程序集以確保它被設置爲fulltrust。」 http://social.msdn.microsoft.com/Forums/is/sqlreportingservices/thread/90bc9167-af50-42ac-be5a-4f10dc7cc652(請注意,這些鏈接是特定於SSRS的)。您可能需要爲您的程序集一樣。 – 2011-12-19 05:32:08

+0

你沒有試過這個:http://stackoverflow.com/questions/5212973/request-for-the-permission-of-type-system-data-sqlclient-sqlclientpermission-s – 2011-12-19 05:32:14

回答

0

我自己用VS2010和SQL Server 2008 R8開發應用程序。我真的希望我知道你在開發什麼樣的應用程序,因爲我不知道你想如何連接到你的數據庫。另一方面,SQL Server 2008 R8最適合3.5.​​net,因爲你使用4.0,請確保你安裝了正確的sql server。如果我沒有弄錯,你需要SP1來使用4.0。

無論如何,這裏是我如何設置。

<appSettings> 
<add key="DataServerLEGOCUSTOM" value="GP2010LEGOCUSTOM"/> 
<add key="DataServerLEGO" value="GP2010LEGO"/> 
</appSettings> 

<connectionStrings> 
<add name="GP2010LEGOCUSTOM" connectionString="Data Source=GP2010;Initial Catalog=LEGOCUSTOM;Persist Security Info=True;User ID=XX;Password=XXY" providerName="System.Data.SqlClient"/> 
<add name="GP2010LEGO" connectionString="Data Source=GP2010;Initial Catalog=LEGO;Persist Security Info=True;User ID=XX;Password=XXY" providerName="System.Data.SqlClient"/> 
</connectionStrings> 

然後,錯誤可能在您的代碼中。你必須正確地調用你的數據庫並創建一個sql連接。所以像這樣的東西

public class Database 
{ 
    private string serverLEGOCUSTOM, serverLEGO; 
    private string ConnectionStringLEGOCUSTOM, ConnectionStringLEGO; 
    private SqlConnection connectionLEGOCUSTOM, connectionLEGO; 

    public Database() 
    { 
     serverLEGOCUSTOM = ConfigurationManager.AppSettings["DataServerLEGOCUSTOM"]; 
     ConnectionStringLEGOCUSTOM = ConfigurationManager.ConnectionStrings[serverLEGOCUSTOM.ToString(); 
     connectionLEGOCUSTOM = new SqlConnection(ConnectionStringLEGOCUSTOM); 
     serverLEGO = ConfigurationManager.AppSettings["DataServerPCI"] 
     ConnectionStringLEGO = ConfigurationManager.ConnectionStrings["serverLEGO"].ToString(); 
     connectionLEGO = new SqlConnection(ConnectionStringLEGO); 
    } 

這只是基本上連接你的sql數據庫的另一種方式。即使Persist Security Info = True可能實際上解決了您的問題。希望這有助於某種方式。