【问题标题】:local db connection string does not work but Context Connection does本地数据库连接字符串不起作用,但上下文连接起作用
【发布时间】:2018-06-14 21:05:39
【问题描述】:

我放弃了。我已经用谷歌搜索过,阅读了许多 SO 帖子......我无法弄清楚这一点。我正在使用 Visual Studio 2012 .NET 3.5 连接到本地数据库实例进行测试。如果我使用

string cnn = @"Context Connection=True";
        using (SqlConnection connection = new SqlConnection(cnn))
        {
            connection.Open();

我连接并且我的代码有效。我现在需要在这个解决方案中添加一个SqlbulkCopy。为此,我将连接字符串切换为:

string cnn = @"Data source= (localdb)\ProjectsV12; Database=TableTesting; Trusted_Connection=True;";
        using (SqlConnection connection = new SqlConnection(cnn))
        {
            connection.Open();

无论我如何处理连接字符串,我都会收到以下错误:

A .NET Framework error occurred during execution of user-defined routine or aggregate "WorkTable": 
System.Security.SecurityException: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
System.Security.SecurityException: 
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.PermissionSet.Demand()
   at System.Data.Common.DbConnectionOptions.DemandPermission()
   at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at StoredProcedures.WorkTable(String o)

我只是不知道如何调试/修复/纠正这个问题。

【问题讨论】:

  • 所以您的论点是connection.Open() 语句中发生了异常?另外,我在您的代码中没有看到SqlBulkCopy
  • 另外,这段代码是否在 SQL Server 的 SQL CLR 存储过程中运行?
  • @STLDeveloper 是的 CLR sp;当我使用调试器单步执行时,代码会爆炸并在connection.Open() 行返回错误。另外,完整的代码很长,所以我只发布了有问题的代码。调试器就停在那里。如果我使用 "Context connection=True" 字符串,那么代码将一直运行(经过 connection.Open() ),直到遇到 SqlBulkCopy 调用。据我了解,SqlBulkCopy 不适用于上下文连接。这不正确吗?
  • 我只做了一点 SQL CLR,而不是其中的 SqlBulkCopy,所以可能不会有太大帮助。看来您在某个地方遇到了权限问题。我知道在使用上下文连接时,会绕过身份验证,所以也许这就是上下文连接有效而正常连接失败的原因。
  • @STLDeveloper 同意这是某种权限问题。我只是不知道如何确定与 VS2012 一起安装的本地 MSSQLEXpress 实例是否是问题或其他问题。

标签: c# .net visual-studio-2012 clr


【解决方案1】:

经过大量令人头疼的混乱......看来PERMISSION LEVEL需要UNSAFETRUSTWORTHY必须检查此连接string string cnn = "Data Source=(localdb)\\ProjectsV12; Initial Catalog=TableTesting; Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"; 正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 2021-01-26
    • 2018-09-03
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多