SqlConnection

时间:2016-04-17 21:25:32

标签: c# connection-string sqlconnection

我创建了这样的连接字符串:

var connectionString = "Data Source=MyPC\\SQLExpress;Initial Catalog=TestDb;Integrated Security=false;User Id=TestUser;password=TestPwd" 

我创建了一个这样的SQL连接:

var sqlConnection = new SqlConnection(connectionString);

然后我创建我的SqlBulkCopy对象:

var bulkData = new SqlBulkCopy(sqlConnection.ConnectionString, SqlBulkCopyOptions.KeepIdentity);

问题是,当批量复制尝试执行时,我收到错误18456,状态8错误消息。此错误表示密码不匹配。但是,我可以使用上面提供的确切凭据登录数据库。

所以,我逐步完成了我的程序并注意到了这一点:调试中的连接字符串看起来应该是用户ID和密码。但是,当我将光标悬停在批量复制sqlConnection.ConnectionString上时,它会显示没有密码的整个连接字符串。它只有用户!出于某种原因,当我使用其中包含密码的连接字符串创建SQL连接时,似乎未使用我的密码。所以,在预感中,我将代码更改为:

var bulkData = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity);

它工作正常!所以,我的问题是,为什么当我使用其中包含密码的连接字符串创建SQL Connection时,密码不会包含在生成的SQL Connection的ConnectionString属性中?

1 个答案:

答案 0 :(得分:3)

除非您在连接字符串中包含Persist Security Info = True,否则SqlConnection会出于安全原因删除密码。