如何通过使用共享内存协议连接sql server的命名实例来创建有效的连接字符串?

Raj*_*sh 4 sql-server ado.net connection-string sql-server-2005 sql-server-2008

如何在禁用sql server浏览器的情况下使用共享内存协议连接sql server的命名实例来创建有效的连接字符串?

Ric*_*ers 8

我用来在使用ADO访问SQL Server的C++应用程序中创建连接字符串的连接字符串格式如下所示.

"Provider=MSDASQL;DRIVER={SQL Server};SERVER=lpc:(local);DATABASE=%s;UID=; Password=;"
Run Code Online (Sandbox Code Playgroud)

lpc:在SERVER =值中强制服务器连接使用共享内存协议.%s用于将特定数据库名称放入从此格式生成的实际控制字符串中.

请参见SQL Connect String


Aar*_*and 3

如果您从本地计算机使用 [服务器名称][实例名称]、(本地)[实例名称] 或 LOCALHOST[实例名称],只要启用了共享内存,它就会使用共享内存(在 UI 中进行引导是不同的) 2005年和2008年,所以我不知道我应该协助哪个版本)。 与 SQLCMD 等不同,没有办法告诉提供者您只想使用共享内存- 如果由于某种原因它不能使用共享内存,它将默认使用不同的协议(命名管道或 TCP/IP) 。您可以通过查看 sys.dm_exec_connections 来检查正在使用的协议:

SELECT session_id, net_transport 
  FROM sys.dm_exec_connections;
Run Code Online (Sandbox Code Playgroud)

我还没有在关闭 SQL 浏览器的情况下对此进行测试,但我认为这应该不会产生任何影响。FWIW,我总是使用 TCP/IP,但我几乎总是避免在本地计算机上安装需要连接到 SQL Server 的应用程序 - 这就是低规格应用程序服务器的用途,而不是占用数据库服务器上的内存和 CPU (因此远离 SQL Server)。