SQL Server不存在或访问被拒绝

时间:2011-01-11 13:07:07

标签: sql sql-server

我们目前正在迁移服务器(2005年至2008年),我们的主机备份了SQL数据库并将其转移到新服务器。

我已经转移了网站文件并更改了连接字符串和global.asa文件中的IP地址。

从技术上讲,我们在新服务器上有镜像,但是当我尝试启动连接到SQL的页面时,我收到以下错误。

SQL_Server_does_not_exist_or_access_denied。

7 个答案:

答案 0 :(得分:6)

  
    

检查您的TCP / IP端口是否已启用

  

要检查它:

-从启动程序中打开 SQL Server配置管理器
-展开 SQL Server网络配置
-单击 XXXX协议
-右键单击 TCP / IP 并打开属性
 -启用TCP / IP
 -在“ IP地址”标签中,在最后一个选项(IPAll)中设置端口1433

答案 1 :(得分:5)

在这种情况下的错误消息很可能是正确的。首先,验证从您到新服务器的网络路径是否正常工作,您可以使用指定的userid / pwd进行连接。

1)打开Management Studio并尝试通过ip地址连接到SQL Server实例。 (顺便说一句,如果您还没有使用SQL Server userid / pwd,那么您可能需要使用SQL Server userid / pwd,因为您在Internet主机上很可能没有用于Windows身份验证的AD上下文。)

2)如果您确实可以使用Management Studio连接到实例和数据库,那么您可能错过了某处的连接字符串。尝试仅为所述连接字符串维护1个位置,通常在配置文件中。检查详细报告的错误行,以发现正在使用的连接字符串,并验证它是否反映了新的服务器IP。

答案 2 :(得分:3)

如果在SQL Config中未正确配置克隆服务器的IP,也会发生同样的错误 - > TCP / IP连接。

在SQL TCP / IP配置中配置错误的IP确实让你:

  1. 使用ODBC连接从服务器名称连接客户端计算机
  2. 使用TELNET连接1433端口号和服务器名称
  3. 当从另一个SQL服务器克隆服务器时,会发生这种情况,该服务器将来自主服务器的SQL IP配置作为残留。

    但客户端应用程序无法使用连接字符串进行连接,但使用服务器名称时会显示以下消息:

    [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied
    

    执行以下操作以在SQL Server上进行验证:

    1. 通过IPCONFIG注意服务器本身的IP(可能是管理员在克隆盒子后更新了机器的IP)
    2. 打开SQL Server配置管理器
    3. 展开SQL Server网络配置
    4. 选择MSSQLSERVER的协议
    5. 双击右侧的TCP / IP
    6. 切换到IP地址标签
    7. 向下滚动到IPv4部分以验证它是否与机器本身的IP地址相同。修复IP,如果不是。如果这是正确的,这不是问题。

答案 3 :(得分:1)

在新计算机上安装安装时,我也遇到过这个问题。

我遇到的连接问题是由于托管MSSQL的服务器上的防火墙设置造成的。该设置为个人IP地址提供了访问权限,这在我们的环境中“有效”,因为我们的管理员将IP地址描述为“粘性”。一旦防火墙访问被授予我的新机器的IP地址,我在本地WAMP设置中运行的PHP odbc_connect(...)语句立即完成。

与许多问题一样,可能会有不止一种方法遇到这些问题,但我希望尽可能明确地了解我的经历。

如果我在自己的PC上安装了自己的MSSQL管理工作室,可能会更清楚一点,但我不这样做。

在MSSQL服务器上的入站规则中,我找到了一个引用MSSQL实例的规则,并且确实在属性选项卡“Scope”下面找到了我旧机器的IP地址作为“远程IP地址”。这是希望每当我拿到下一台机器时我都记得这个! (退役的PC的IP已被删除)

@Darren,如果你可以根据你接受的答案发表评论,那么知道@ Tahbaza的哪些建议引导你解决问题可能会很好。

答案 4 :(得分:1)

数据库的凭据是否配置为使用SQL用户和登录而不是Windows用户和登录?

如果是这样,您可能需要将数据库中的SQL用户重新映射到服务器上的SQL登录名。要扫描以查看是否存在此问题,可以使用EXEC sp_change_users_login 'Report''Auto_Fix'选项将自动更正系统找到的问题。您还可以运行ALTER USER $User WITH LOGIN $Login以单独手动更正每个映射。

http://technet.microsoft.com/en-us/library/ms174378.aspx

导致该问题是因为在旧服务器上的数据库中为SQL用户生成的SID与新数据库上的SQL登录的SID不匹配。存储过程纠正了差异。

答案 5 :(得分:1)

从Qt连接到同时在我的计算机上运行的Microsoft SQL Server 2014时,我遇到了这个问题...

我使用了以下QODBC连接字符串:

db.setDatabaseName("Driver={SQL Server};Server=DESKTOP-F6T7JPD\\sql_Instance_Name;Database=master;Uid=sa;Pwd=your_pwd;");

我只遇到了两个问题:

  1. 确定要用于Server的内容,这必须是在SQL Server实例上配置的服务器名称,这可以通过打开“MicrosoftSql2014 management Studio”找到,然后通过查看属性我找到了名称({{ 1}})

  2. 第二个问题实际上是必须通过在我的PC名称和实例名称之间添加另一个反斜杠DESKTOP-F6T7JPD\sql_Instance_Name来修改此名称 所以在管理工作室找到的名字就像:\。 请注意“\”,...这必须设为PC_Name\Sql_Instance 请注意PC名称和实例名称之间的Pc_Name\\Sql_Instance

答案 6 :(得分:0)

一个可能的原因是服务器未运行。如果即使在Management Studio中也无法连接,请检查SQL Server服务是否已启动已启动,并且已将其配置为自动,以便在启动时启动。