试图在 Windows 盒子上打开一个洞来访问 sql server。
如何测试以查看端口是否打开(不使用 sql 测试登录等)
我正在寻找一种更通用的不涉及 sql server 的测试方法,只是为了隔离无法连接的问题,即它是登录问题还是连接/防火墙问题。
我是 MS SQL 的新手,作为一名系统管理员经验有限的 Web 开发人员,希望他的服务提供商使用最佳实践,因此提出了这个问题。
我们在托管公司提供的远程 MS SQL 服务器上有一个数据库。我们托管公司的其他客户使用同一台服务器作为他们的数据库。当我使用 Microsoft SQL Server Management Studio Express 登录到服务器时,我可以看到大量信息,包括服务器上所有数据库的名称和所有登录名。
虽然我无法访问其他客户的数据库,也无法看到密码,但我什至能够看到这些信息,这对我来说似乎很奇怪。我当然不希望其他客户知道我的数据库名称或我的登录名。当我向我的服务提供商提出这个问题时,他的回答是:
我咨询了我的 SQL 人员,他说不幸的是 MSSQL Server 的一个限制。尽管数据库名称是可见的,但如果没有该数据库的密码,您将无法访问该数据库。
这是我登录后看到的:
这是设置 SQL Server 的正确方法吗?请确认或否认我的怀疑,答案是否定的,我需要找其他人来托管我们的数据库。
是否有用于管理类似于 phpMyAdmin(用于 MySQL)的 MSSQL 的网络界面?
我想要一个自助服务设置,开发人员可以通过 Web 界面创建数据库,并在没有本地访问的情况下上传/下载数据库备份。
我考虑过phpMSAdmin,但它自 2006 年以来一直没有发布,所以我不确定它是否值得设置它。如果还有其他东西(免费或不那么免费)那就太好了。
我的问题是相似的这一张贴2年前,但是没有很好的webinterface发现当时的情况。SQL Web 数据管理器看起来很有趣,但它缺少一些功能——最显着的是创建新数据库(而且,自 2007 年以来没有更新)。
我正在建立一个涉及 .NET 解决方案和 MSSQL 2008 数据库的持续集成解决方案。
我所有的构建服务器都位于一个名为Build Servers. 我已将DOMAIN\Build Servers对象创建为 MSSQL 登录名并授予该组dbcreator和securityadmin服务器角色。我没有授予任何特定的数据库角色,因为我的理解是这些服务器角色应该让该组中的任何 AD 帐户创建、更改、删除和数据库或用户。
我正在运行一个示例作业,它应该对特定数据库应用一些简单的修改。但是,我收到以下错误:
Detailed message Cannot open database "awesome-database" requested by the login. The login failed.
Database.dbschema : Deploy error TSD01234: Login failed for user 'DOMAIN\BUILDSERVER01$'.
Run Code Online (Sandbox Code Playgroud)
DOMAIN\BUILDSERVER01$ 肯定在 Build Servers 组中,因此它应该能够登录并更改任何数据库。
我是否在这里遗漏了一些明显的内容,或者我是否必须将此登录名映射到存在的每个数据库?
编辑
如果我授予sysadmin,它会起作用。嗯。
我管理使用 SQL Server 作为数据库引擎的大型基于云的产品。该模型的设计使得使用该产品的每个客户都有自己的 MS SQL Server 实例。我需要一种从用于处理实例管理的集中式 SQL 实例查询、更新和插入这些实例的方法。我已经确定创建链接服务器对象是可行的方法,而且我已经通过这种方式处理来自这些数据库的临时更新。我正在努力扩展一些功能,这将显着增加从这个集中管理实例执行的查询的数量和频率。
所以,这是我的问题:始终从单个 SQL 实例打开 100 多个链接服务器对象有什么影响?有什么影响吗?到目前为止,我对链接服务器的做法是在完成后删除它们。
我们正在尝试使用 Foxpro ODBC 驱动程序通过 MSSQL Server 的链接服务器功能访问基于 Foxpro 文件的数据库文件。
为此,我们已经

但是最后一步永远不会完成(永远显示“Executing”)。当 Management Studio 被强制关闭并重新启动时,新的链接服务器就在那里,但只包含 Catalogs 子项。如果我们尝试扩展它,Management Studio 将再次进入循环。
我的公司刚刚开始在 Windows 2008 R2 服务器上使用 TMG 2010 作为我们的防火墙/Web 代理。自移动以来,与 SQL Server 的所有连接都在大约 30 秒后关闭。
例如:
再次运行查询,它将失败并显示以下错误
A transport-level error has occurred when sending the request to the server.
(provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.
Run Code Online (Sandbox Code Playgroud)运行时间超过 30 秒的查询也会出现同样的问题。
我假设第 3 步中的错误是因为 SSMS 没有意识到现有连接已关闭。
查看 TMG 日志,我可以看到 SQL 连接正在关闭,其中包含以下信息:
Closed Connection
Log type: Firewall service
Status: Unspecified error
Rule: Internal Internet Access
Source: Internal (xx.xx.xx.xx) …Run Code Online (Sandbox Code Playgroud) 我尝试在 Windows 2008 和 Windows 7 上安装 SQL Server 2012 Standard(我只想在 Win7 上安装 management studio)。相同的 ISO;两台机器都是新建的。但是,在 Windows 7 上C:\Program Files...,即使没有选中任何选项,共享功能目录也会设置为灰色。C:是操作系统驱动器;然而,它是一个相当小的 SSD,所以我正在尝试将我能安装的所有东西都安装到另一个驱动器上。
在 Win2008 上,它不会变灰(不幸的是,我不需要在那里更改任何内容)。
什么可能导致共享目录在 Windows 7 上变灰?
来自 SQL Server 2008 R2 联机丛书:
服务器内存选项
当 SQL Server 动态使用内存时,它会定期查询系统以确定可用的物理内存量。SQL Server 使用内存通知 API
QueryMemoryResourceNotification来确定缓冲池何时可以分配内存和释放内存。
来自 SQL Server 2005/2008 联机丛书:
服务器内存选项
当 SQL Server 动态使用内存时,它会定期查询系统以确定可用的物理内存量。在 Microsoft Windows 2000 下,SQL Server 会根据服务器活动增大或缩小缓冲区缓存以将可用物理内存保持在 4 MB 到 10 MB 之间。维护此可用内存可防止 Windows 2000 分页。如果可用内存较少,SQL Server 会将内存释放给 Windows 2000。
在 Windows Server 2003 下,SQL Server 使用内存通知 API
QueryMemoryResourceNotification来确定缓冲池何时可以分配内存和释放内存。
我知道 SQL Server 管理自己的内存使用情况。如果服务器的可用内存不足,SQL Server 会释放一些内存(自己饿死)。这是默认的、理想的、首选的行为。但我已经看到了很多的地方时,有SQL Server未释放内存的情况下是其他饥饿的应用程序(从大量的寻呼故障即痛苦)。
然后我发现有人提到SQL Server 实际释放内存可能需要几天时间:
专业的 Microsoft SQL Server 2008 管理,内存使用
SQL Server 是目前性能最好的服务器应用程序之一。当操作系统触发内存不足通知事件时,SQL 将释放内存供其他应用程序使用,如果机器上正在运行另一个内存贪婪的应用程序,则它实际上会耗尽自己的内存。好消息是 SQL …
我有一个运行着 SQL 2008 EXPRESS 实例的开发服务器。该域称为 DEVAD,该实例已启用共享内存、命名管道和 TCP/IP。
我的工作站 PC 位于另一个名为 AD 的域中。
我在 AD 和 DEVAD 之间设置了域信任,我可以使用我的 AD 凭据通过 SSMS 或 .NET 程序连接到 DEVAD 实例。
不幸的是,当我使用不同域的凭据通过 VPN 连接到另一个网络时,我收到以下错误“登录失败。登录来自不受信任的域,无法与 Windows 身份验证一起使用。(Microsoft SQL Server,错误: 18452)”。
我的 VPN 连接有一个“在远程网络上使用默认网关”选项,未选中 IPv4 和 IPv6。
关于如何防止 VPN 连接破坏信任的任何想法?
更新:我有一个额外的 VPN,我偶尔会连接到它,当这个 VPN 处于活动状态时,我在连接到 SQL 的同时没有问题。
我在连接和未连接各种 VPN 的 SQL 主机上做了一些 nslookup 测试。我的问题 VPN 以 DNS 超时而告终,这可能意味着 VPN 上的 DNS 配置错误并吞掉了请求,而不是提供不存在的域响应(就像我的其他 VPN 那样),并让系统继续运行查询确实知道它的 DNS。