SqlConnection 的密码问题

Password problems with 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 连接时,密码不包含在生成的 SQL 连接的 ConnectionString 属性?

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