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

发布于 2024-08-21 18:36:14 字数 71 浏览 1 评论 0原文

在禁用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风筝在阴天搁浅。 2024-08-28 18:36:14

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

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

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.

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

The lpc: in the SERVER= 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

贪恋 2024-08-28 18:36:14

如果您在本地计算机上使用 [服务器名称][实例名称]、(本地)[实例名称] 或 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)。

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:

SELECT session_id, net_transport 
  FROM 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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文