Windows 7中的SQL Server Management Studio本地数据库连接错误

13

我正在运行Windows 7中的SQL Server 2012 Management Studio Express,无法连接到本地数据库。我尝试了所有上述解决方案,但都没有成功。请求帮助,谢谢。

安装URL在这里

错误- 在建立与SQL Server的连接时发生了一个与网络相关的或特定于实例的错误。找不到服务器或无法访问。请验证实例名称正确,并确认SQL Server已配置为允许远程连接。(提供程序: SQL Network Interfaces, 错误: 26 - 无法定位指定的服务器/实例) (Microsoft SQL Server, 错误: -1)

需要帮助,请点击MSDN链接


连接字符串中有什么?错误提示你可能在其中有一个无效的数据源元素。 - Preet Sangha
7个回答

22

假设您已安装了SQL Server并使用了命名实例SQLEXPRESS,则您的服务器名称应为:

.\SQLEXPRESS

或者:

127.0.0.1\SQLEXPRESS

你可以在开始菜单的路径中检查实例名称(可能不是SQLEXPRESS),并确认服务器是否正在运行,路径非常类似于这个(但版本会有所不同):

开始菜单 > 程序 > Microsoft SQL Server > 配置工具 >
   SQL Server配置管理器

如果它当前已停止,则需要右键单击并选择启动:

enter image description here

你还需要右键单击并确保启动模式设置为自动(这在属性>服务下)。
错误消息似乎暗示服务器正在尝试使用命名管道。虽然在本地它应该能够使用共享内存,但接下来您应该确保SQL Server浏览器服务正在运行。您可以在以下位置进行操作:
控制面板>管理工具>服务

enter image description here

如果没有启动,请启动它,并将其启动模式设置为自动。 (如上所述,您可以从右键菜单中执行这两个操作。)
如果仍然无法解决问题,则可能是您在未将Windows帐户手动添加到管理员组的情况下安装了SQL Server 2012。 如果是这种情况,希望您将其设置为使用混合模式,并且可以连接为sa。 否则,您需要使用PSExec.exe等工具以NT AUTHORITY \ SYSTEM身份运行SSMS:
PsExec -s -i "C:\...path to ssms...\Ssms.exe"

无论您是使用sa连接还是需要使用PSExec连接,下一步都是:
  1. 确保您的Windows帐户是Server > Security > Logins下的登录帐户。如果没有,请右键单击Logins > New Login进行添加。
  2. 确保该登录帐户是sysadmin固定服务器角色的成员。如果不是,请确保它在Server Roles选项卡下。

1
如果您想连接本地数据库,只需在服务器名称文本框中输入(LocalDb)\v11.0即可。 - Moshi

11

您可以使用命名管道将SSMS连接到本地数据库实例。

1 - 运行以下命令获取(localdb)实例的地址: "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" info [InstanceName] (如果您感兴趣的是默认实例,请将[InstanceName]指定为v11.0) 您可以使用以下命令将其写入CMD文本文件:

"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe" info v11.0 > C:\db_details.txt

2- 复制“实例管道名称”的值,例如np:\.\pipe\LOCALDB#1E0FF40B\tsql\query

3- 将“实例管道名称”值粘贴为服务器名称。


不起作用。当使用命名管道连接时,我仍然收到相同的错误消息。 - ygoe
请确保您已启用命名管道 - https://www.blackbaud.com/files/support/infinityinstaller/content/installermaster/tkenablenamedpipesandtcpipconnections.htm - Dmitry Pavlov
太好了。现在我已经启用了命名管道(没有人告诉我需要这样做),sqllocaldb info 返回命名管道实例的空值。看起来它现在已经消失了,应该做些什么。还是不起作用。我想我会继续使用SQL Express。或者如果需要真正紧凑的话,可以考虑PostgreSQL/MySQL。 - ygoe

6

4

0

尝试这段代码:

RegistryKey rKey;
string InstanceName;

//use this string for database connection
string ConString;
string regPath = @"Software\Microsoft\Microsoft SQL Server\UserInstances";
rKey = Registry.CurrentUser.OpenSubKey(regPath);

if (rKey.GetSubKeyNames().Length != 0)
{
    regPath += @"\" + rKey.GetSubKeyNames()[0];
    rKey = Registry.CurrentUser.OpenSubKey(regPath);
    InstanceName = rKey.GetValue("InstanceName").ToString();
    ConString = @"Server=np:\\.\pipe\" + InstanceName +
        @"\tsql\query;Initial Catalog=RahBord;Trusted_Connection=True";
}
else
{
    Process.Start(@"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe", "c amirLOCALDB -s");
    regPath += @"\" + rKey.GetSubKeyNames()[0];
    rKey = Registry.CurrentUser.OpenSubKey(regPath);
    InstanceName = rKey.GetValue("InstanceName").ToString();
    ConString = @"Server=np:\\.\pipe\" + InstanceName + @"\tsql\query;Initial Catalog=RahBord;Trusted_Connection=True";
}

如果你的实例停止了,请转到此地址:

C:\Program Files\Microsoft SQL Server\110\Tools\Binn\ 

并使用此命令

SqlLocalDB.exe s yourInstance

0
  1. 打开任务管理器,然后在进程选项卡下找到sqlservr.exe
  2. 确保“命令行”列可见,如果不可见,则单击“查看”>“选择列”>向下滚动并选中“命令行”>单击“确定”
  3. 您将看到“C:\Program Files\Microsoft SQL\110\LocalDB\Binn\sqlservr.exe” -c SMSSQL11E.LOCALDB -sLOCALDB#C1E849D0 --等等
  4. 注意LOCALDB#C1E849D0
  5. 以管理员身份运行SQL管理工具,然后在服务器名称中输入\\.\pipeLOCALDB#C1E849D0\tsql\query 现在,您应该能够浏览LOCALDB中的所有数据库了

0

您是否检查了TCP协议是否已启用于您的特定服务器?请按照以下说明查看它是否已启用。

http://msdn.microsoft.com/en-us/library/bb909712(v=vs.90).aspx

启用它们后,您必须重新启动服务。如果无法启动,请检查事件日志以查找原因。常见原因是在该端口上已经运行了另一个服务(通常是另一个版本的SQL Server)。如果是这种情况,您可能需要重新配置服务器端口。请查看此博客文章(还包括如何检查TCP/IP启用的图像):

http://blogs.msdn.com/b/sqlblog/archive/2009/07/17/how-to-configure-sql-server-to-listen-on-different-ports-on-different-ip-addresses.aspx

接下来通常遇到的问题是防火墙或互联网安全软件阻止连接。即使在本地实例中,我也曾遇到过这种情况。解决这个问题后,您应该就可以顺利进行了。

如果经过所有这些步骤仍然无法连接,请搜索事件日志以查找原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接