我是一名开发人员尝试播放管理员,并希望使用 sql server 用户(“op_web”)从我的开发机器连接到远程 sql server。
当我尝试从 vs2008 服务器资源管理器连接时,我可以连接到服务器,但没有列出任何数据库。如果我使用服务器管理员用户连接,所有数据库都按预期列出。
该服务器是我制作的相对较新的安装。
我有
允许在 sql server 中进行远程连接。
在服务器级别创建了登录 op_web
在数据库级别创建了一个用户并分配给同名登录
为用户分配角色以允许读取和写入 - 我没有分配任何模式,用户的默认模式是 dbo。
如果我使用 sqlserver management studio/sqlserver 身份验证和创建的登录名登录(在服务器本地),我可以按预期显示和更改表数据。
远程访问让我无法选择数据库。
在客户端机器上的 Visual Studio 中,我得到了下拉列表中列出的服务器名称以及发现的 sql server - 如前所述,我可以使用 windows 用户(管理员帐户)进行连接。此外,我尝试过另一台具有相同负面结果的物理机器。它闻起来不像是防火墙问题,但我试图禁用服务器防火墙以防万一,但这也没有解决它。我有另一个数据库服务器,一切正常,我已经克隆了每个用户到用户的设置(所以听起来问题与 sql server 实例有关,而不是与用户有关)。
任何指向我可能错过的东西?
(这个问题是在https://stackoverflow.com/questions/1386223/how-to-allow-access-for-a-sql-server-user上提出的)
SQL Server“用户”对他们来说有两个部分。
服务器登录。定义为服务器级别,并且可能与服务器角色相关联(例如 dbcreator:“dbcreator 固定服务器角色的成员可以创建、更改、删除和恢复任何数据库”)。将 Windows 用户映射到服务器角色(其中一些是自动完成的,但取决于 SQL Server 1的版本)
数据库用户。这些是由数据库创建的,给定数据库角色(例如,用于完全控制的“dbo”(“数据库所有者”)或“dbreader”以能够读取数据)。创建时,这些与服务器登录相关联。
您可以定义服务器和数据库角色以授予特定权限)。
有关详细信息,请参阅 SQL Server 联机丛书(或 MSDN 上)。
因此,您需要使用管理员帐户为您的 Windows 用户帐户创建一个服务器登录名,并授予它访问您需要使用的数据库的权限。如果您正在定义事物(表、视图、存储过程......),您确实需要“dbo”角色,或者需要相当多的工作来进行更精细的控制。
请记住仅使用应用程序需要的访问权限来测试应用程序(例如,很少有应用程序会创建/删除/更改视图或表)。
1在 SQL Server 2005 中,主机的本地管理员组被映射到具有“sysadmin”服务器角色的登录名,在 2008 中,您可以在设置中指定要映射的帐户)。
为了能够在网络上看到(远程连接),您需要验证 SQL Server 实例是否已为其配置了 TCP/IP 等网络库。您可以使用 SQL Server 配置管理器进行配置。如果您必须进行更改,则在您重新启动 SQL Server 之前它不会生效。现在,如果它是一个命名实例,您还需要确保 SQL Server Browser 服务正在运行。这为客户端提供了 TCP 端口,该客户端试图找到与命名实例相关的 TCP 端口。并且您需要确保防火墙上针对这两种服务都有例外。
关于您的 SQL Server 登录,如果您尝试使用 SQL Server Management Studio 登录,如果您收到错误提示它不是受信任的连接/帐户,则您的 SQL Server 配置为仅使用 Windows 身份验证,这意味着您可以'不使用基于 SQL Server 的登录名进行连接。在您的情况下,您已经表明您已将其设置为混合模式,这就是您想要的。但是,如果您在进行更改后没有重新启动 SQL Server,则可能是问题所在。同样,这是仅在启动时运行的另一种设置。
您可以忽略的 Kerberos 错误。这是因为只有域管理员或计算机帐户本身(如果您在 Windows 2003 上作为 Nework 服务运行)可以注册 SPN。因此,如果您使用其他任何东西,就会出现该错误。在这种情况下,最好手动创建 SPN,但不应在此处输入,因为这仅显示用于 Windows 身份验证。Kerberos 对基于 SQL Server 的登录没有影响。
现在对于 SQL Server 用户,您是否能够使用 SQL Server Management Studio 在本地连接到 SQL Server?
道歉是为了 - 现在问题解决了:
我重新安装了整个服务器并添加了 sql server 作为第一件事 - 我怀疑通过 SSL 工作的 VisualSVN 正在破坏 sqlserver 登录也需要的安全连接。
事实上问题仍然存在,但再次尝试禁用防火墙实际上解决了眼前的问题。
我在防火墙上为 1433/TCP 打了一个洞,事情就在我想要的地方。
谢谢你的时间,虽然...