如何在禁用sql server浏览器的情况下使用共享内存协议连接sql server的命名实例来创建有效的连接字符串?
答案 0 :(得分:8)
我用来在使用ADO访问SQL Server的C ++应用程序中创建连接字符串的连接字符串格式如下。
"Provider=MSDASQL;DRIVER={SQL Server};SERVER=lpc:(local);DATABASE=%s;UID=; Password=;"
lpc:在SERVER =值中强制服务器连接使用共享内存协议。 %s用于将特定数据库名称放入从此格式生成的实际控制字符串中。
答案 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)。