繁体   English   中英

SQL Server 2005 SQL身份验证连接字符串

[英]SQL Server 2005 SQL Authentication Connection String

我正在构建一个连接到SQL Server 2005的应用程序。它当前使用Windows身份验证,但是我想切换到SQL身份验证(我相信有时也称为混合身份验证)。 我当前的连接字符串是:

"Data Source=LOCALHOST;Initial Catalog={0};Integrated Security=SSPI"

这用于Windows身份验证,但是对于SQL,我在想:

"Data Source=LOCALHOST;Initial Catalog={0};user id={1};password={2}"

这是正确的方法吗? 该代码假定:

  • {0}是数据库的名称
  • {1}是用户名
  • {2}是密码

我正在切换到SQL身份验证,因为我正在考虑连接到远程服务器上的SQL Server实例-SQL身份验证是执行此操作的正确方法,我是否只需要输入当前“ LOCALHOST”所在的IP?

谢谢!

更新:伙计们,谢谢您提供的所有很好的答案! 所有这些都很棒,而且非常有帮助,我什至无法决定授予哪个“可接受的答案”,但是我投票赞成了所有这些,因为它们很摇摆。 再次感谢!

您以正确的方式前进,但我认为查看连接字符串可能比这里的任何答案对您有更大的帮助。

您还可以使用uid代替“用户ID”,并使用pwd代替“ password”:

"Data Source=LOCALHOST;Initial Catalog={0};uid={1};pwd={2}"

可以使用远程计算机的IP或DNS名称代替LOCALHOST。 请注意,如果远程计算机上存在多个SQL Server实例,则需要在“数据源”下指定实例-例如“数据源= 11.22.33.44 \\ SQLEXPRESS”。

有一个适用于此的应用程序: SqlConnectionStringBuilder

SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "LOCALHOST";
scsb.InitialCatalog = ...;
scsb.IntegratedSecurity = false;
scsb.UserID = ...;
scsb.Password = ...;

SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "LOCALHOST";
scsb.InitialCatalog = ...;
scsb.IntegratedSecurity = true;

然后,您可以从构建器的ConnectionString属性中提取连接字符串。 这种方式可以防止错误,您以后可以修改其他属性,例如ConnectTimeoutAsynchronousProcessing ,而不必记住字符串语法。

是的,这将完全按照您所说的进行。

“数据源= 11.22.33.44;初始目录= {0};用户标识= {1};密码= {2}”

如果本地服务器和远程服务器之间没有公用的Active Directory域,那么我认为您将需要SQL身份验证。 have a common ADS domain, then I recommend using it – otherwise you have to either use a common SQL account for everyone (and then use an appropriate mechanism to encrypt the password) or create separate SQL accounts for each user, thereby duplicating data. 但是,如果您有一个通用的ADS域,那么我建议您使用它-否则,您必须为所有人使用一个通用SQL帐户(然后使用适当的机制来加密密码),或者为每个用户创建单独的SQL帐户,从而复制数据。

对该初始目录设置要非常小心。 如果该值可以由用户输入提供,那么如果您没有适当的验证来防止它攻击,则可以将其用于尝试攻击另一个数据库。 对不起,如果我正在宣讲合唱团:-)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM