Microsoft ODBC Driver 17 for SQL Server
我正在尝试通过sqlcmd
设置-S
指向 的(服务器)选项来连接到服务器127.0.0.1,1434
。我已确认这是正确的端口。
我无法使用传统的.
, (local)
,localhost
选项。它必须通过其环回接口 IP 来寻址服务器127.0.0.1
(有关原因的其他上下文,请参阅帖子末尾)。
127.0.0.1
TLDR:为什么当登录名具有角色时我只能通过本地 IP 进行连接sysadmin
?
当我使用具有以下角色的登录名 ( local
)进行连接时sysadmin
:
sqlcmd -S 127.0.0.1,1434 -U local -P **** -d ****
1>
Run Code Online (Sandbox Code Playgroud)
不过,我正在尝试通过我创建的新登录进行连接,该登录具有更严格的访问权限。因此我不想给这个新登录角色赋予角色sysadmin
,而是使用默认public
角色。
当我尝试使用此登录以相同的方式连接时,我得到Login failed for user 'TestLogin'
sqlcmd -S 127.0.0.1,1434 -U TestLogin -P **** -d ****;
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server …
Run Code Online (Sandbox Code Playgroud) 我多年来一直在寻找这些信息,但似乎找不到它:
learn.microsoft.com上是否有任何文档提供了一个表,其中包含 SQL Server 和 LocalDB 的所有有效连接字符串参数、它们的有效参数值、它们的默认值及其含义?
我找到的只是一些教程和示例页面,但没有完整的参考页面。
数据库连接字符串中的 MultiSubnetFailover 选项控制客户端尝试连接到数据库服务器的方式,尤其是当多个 IP 可用时。
关于正确的连接字符串语法是否为以下内容存在冲突的文档:
MultiSubnetFailover=Yes
Run Code Online (Sandbox Code Playgroud)
或者:
MultiSubnetFailover=True
Run Code Online (Sandbox Code Playgroud)
是否同时支持“Yes”和“True”?还是因驾驶员而异?如果是后者,是否有哪些驱动程序支持哪些语法的列表?
2023年3月30日更新:
此 Microsoft 文档暗示“True”或“Yes”适用于另一个选项:
Persist Security Info 关键字的默认设置为 false。将其设置为true 或 yes允许在连接打开后从连接获取安全敏感信息,包括用户 ID 和密码。将持久安全信息设置为 false 以确保不受信任的源无法访问敏感的连接字符串信息。
https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/connection-string-syntax
(强调已添加)
sql-server high-availability disaster-recovery connection-string