微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Visual Studio 2013与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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐