c# – Visual Studio 2013与SQL Server 2014的连接
使用Visual Studio,我无法连接到SQL Server.我认为这是Visual Studio特有的,而不是服务器本身. VS在笔记本电脑(工作站)上,服务器在另一个子网上.版本列在标题中,我已经考虑过以下解决方案:
Visual Studio 2013 incompatibility with MS SQL Server 2014 >我的连接字符串在PowerShell中可以正常工作. 请不要将此标记为无关紧要,因为这与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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |