加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Visual Studio 2013与SQL Server 2014的连接

发布时间:2020-12-15 20:57:34 所属栏目:百科 来源:网络整理
导读:使用Visual Studio,我无法连接到SQL Server.我认为这是Visual Studio特有的,而不是服务器本身. VS在笔记本电脑(工作站)上,服务器在另一个子网上.版本列在标题中,我已经考虑过以下解决方案: Visual Studio 2013 incompatibility with MS SQL Server 2014 我
使用Visual Studio,我无法连接到SQL Server.我认为这是Visual Studio特有的,而不是服务器本身. VS在笔记本电脑(工作站)上,服务器在另一个子网上.版本列在标题中,我已经考虑过以下解决方案:

Visual Studio 2013 incompatibility with MS SQL Server 2014

>我的连接字符串在PowerShell中可以正常工作.
>与服务器资源管理器连接时,我的连接在Visual Studio中工作.
>连接在C#代码中不起作用,我已经把它剥离到一个基本的控制台项目,尽可能基本.
>我已经尝试过在论坛中可能找到的连接字符串的所有迭代. (我现在去过30多个论坛,很容易)
>我已经尝试过SQL Server身份验证和Windows身份验证.这两种形式都可以在PowerShell和Visual Studio Server Explorer中使用.

请不要将此标记为无关紧要,因为这与C#和NOT SQL有关.
服务器已正确设置为远程访问和连接类型.

using System; 
using System.Data.SqlClient; 

namespace ConsoleApplication2 { 
    class Program { 
        static void Main(string[] args) { 
            System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder();
            builder.DataSource         = "SERVERNAME";
            builder.InitialCatalog     = "DATABASE";
            builder.IntegratedSecurity = true;
            Console.WriteLine(builder.ConnectionString);
            SqlConnection conn = new SqlConnection(builder.ConnectionString);
            conn.Open();
            Console.WriteLine(conn.State); 
        } 
    } 
}

在PowerShell,同一台机器上,此代码有效.

$dataSource                  = "SERVERNAME"
$database                    = "DATABASE"
$connectionString            = "Server = $dataSource; Database = $database; Integrated Security = $TRUE;"
$connection                  = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
Write-Host $connection.State

解决方法

您应该始终使用ConnectionStringBuilder来创建连接字符串.这可确保有效的语法并避免恶意注入:

System.Data.SqlClient.SqlConnectionStringBuilder builder =
    new System.Data.SqlClient.SqlConnectionStringBuilder();
builder.DataSource = "SERVERNAME";
builder.IntegratedSecurity = true;
builder.InitialCatalog = "DATABASE";
builder.UserID = "userid";
builder.Password = "password";
Console.WriteLine(builder.ConnectionString);

对于您的示例,这将生成以下输出:

Data Source = SERVERNAME; Initial Catalog = DATABASE; Integrated Security = True; User ID = userid; Password = password

请注意,Integrated Security = True;表示您要使用当前的Windows帐户凭据进行身份验证;在这种情况下,不需要用户ID和密码.

资料来源:https://msdn.microsoft.com/en-us/library/ms254947%28v=vs.110%29.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读