如何使用共享内存协议连接 SQL Server 的命名实例来创建有效的连接字符串?
在禁用 sql server 浏览器的情况下,如何使用共享内存协议连接 sql server 的命名实例来创建有效的连接字符串?
How can I create a valid connection string by using shared memory protocol to connect a named instance of sql server while the sql server browser is disabled?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我用来在使用 ADO 通过共享内存访问 SQL Server 的 C++ 应用程序中创建连接字符串的连接字符串格式如下。
SERVER=
值中的lpc:
强制服务器连接使用共享内存协议。%s
用于将特定的数据库名称放入从此格式生成的实际控制字符串中。请参阅 SQL 连接字符串
The connect string format that I am using to create a connect string in a C++ application using ADO to access SQL Server through shared memory is as follows.
The
lpc:
in theSERVER=
value forces the server connection to use the shared memory protocol. The%s
is used to put the specific database name into the actual control string generated from this format.See SQL Connect String
如果您在本地计算机上使用 [服务器名称][实例名称]、(本地)[实例名称] 或 LOCALHOST[实例名称],只要启用了共享内存,它就会使用共享内存(在 UI 中进行引导是不同的) 2005年和2008年,所以我不知道我应该协助哪个版本)。
与 SQLCMD 等不同,没有办法告诉提供者您只想使用共享内存- 如果由于某种原因它不能使用共享内存,它将默认使用不同的协议(命名管道或 TCP/IP)。您可以通过查看 sys.dm_exec_connections 来检查正在使用的协议:我还没有在关闭 SQL 浏览器的情况下对此进行测试,但我认为这应该不会产生任何影响。 FWIW,我总是使用 TCP/IP,但我几乎总是避免在本地计算机上安装需要连接到 SQL Server 的应用程序 - 这就是低规格应用程序服务器的用途,而不是占用数据库服务器上的内存和 CPU (因此远离 SQL Server)。
If you use [servername][instance name], (local)[instance name] or LOCALHOST[instance name] from the local machine, it will use shared memory as long as shared memory is enabled (guiding through this in the UI is different in 2005 and 2008, so I don't know which version I should assist for).
Unlike with SQLCMD etc. there isn't a way to tell the provider that you only want to use shared memory- if for some reason it can't use shared memory it will default to a different protocol (named pipes or TCP/IP). You can check what protocols are in use by looking at sys.dm_exec_connections:I haven't tested this with SQL Browser turned off but I think this shouldn't have any impact. FWIW, I always use TCP/IP, but I almost always avoid having applications on the local machine that need to connect to SQL Server - this is what lower-spec'd application servers are for rather than taking memory and CPU on the database server (and therefore away from SQL Server).