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

时间:2010-02-15 12:32:48

标签: sql-server sql-server-2005 sql-server-2008 ado.net connection-string

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

2 个答案:

答案 0 :(得分:8)

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

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

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

请参阅SQL Connect String

答案 1 :(得分:3)

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

SELECT session_id, net_transport 
  FROM sys.dm_exec_connections;

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