无法从C#(VS2010)连接到SQL Server 2008 Express

时间:2011-12-19 05:21:30

标签: c# sql sql-server-2008

  

可能重复:
  Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=4.0.0.0

我第一次为数据库编写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();

我收到安全例外:

  

请求类型'System.Data.SqlClient.SqlClientPermission,System.Data的权限,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'   失败。

我已经阅读了一堆相关的SO帖子和在线,但没有进一步。我已经启用了Config Mgr中的每个协议,我已经无数次地重新启动了服务,我已经在我找到的任何地方添加了用户权限,并尝试在我的连接字符串中使用“user id”和“password”而不是可信连接。纳达。

1 个答案:

答案 0 :(得分: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可能实际上可以解决您的问题。希望这在某种程度上有所帮助。