我对 SQL Server 有点陌生,我正在尝试编写 Microsoft SQL Server (2005-2014) 安装后活动的脚本,但我在更改登录时遇到了一些困难。公司政策规定没有登录应该默认使用 master 数据库,因此我的计划是识别所有默认使用 master 的登录并将 master 更改为 tempdb。
可以使用这样的查询更改单次登录:
ALTER LOGIN [sa] WITH DEFAULT_DATABASE = tempdb
Run Code Online (Sandbox Code Playgroud)
试图在所有登录中实现这一点(不知道它们的数量和名称),我知道我很天真,希望这样的事情会起作用(但不得不尝试):
UPDATE master..syslogins
SET dbname = 'tempdb'
WHERE dbname = 'master'
Run Code Online (Sandbox Code Playgroud)
显然输出是一个错误(逻辑上):
Ad hoc updates to system catalogs are not allowed.
SQL Server 处于 MIX 身份验证模式,因此几乎所有内容都可以登录 - SQL 登录、Windows 本地或域用户或组(不确定这是否会对解决方案产生任何影响)。解决方案应该与版本无关,但是假设从 SQL Server 2005 向前启动(...是的,仍然有一些古老的版本...)
任何人都可以帮我找到合适的查询来实现这一目标吗?
我需要找到一种方法来识别 SQL 实例,无论对运行它的 SQL Server 和/或 Windows Server 进行了哪些更改,因为我们正在将有关实例的远程信息收集到我们的操作数据库中,并且仍然遇到我们正在使用的方法识别它并不像它看起来那么独特。
例如,如果我有服务器 WIN1\SQL 并且由于服务器刷新将安装在不同的服务器 WIN2\SQL 上,迁移数据并交换服务器名称,以便 WIN2\SQL 将变为 WIN1\SQL,反之亦然,我需要能够识别当前的 WIN1\SQL 与以前的 WIN1\SQL 不同 忽略操作系统版本和/或 SQL 版本\补丁级别
已经尝试以下:
NetworkName\InstanceName - 一直工作到服务器主机名\网络名称由于服务器刷新而改变,如上所述
SQL Server SID - 我正在寻找一些像 Windows 一样的 SQL 安装的 SID,但似乎没有这样的东西真的存在
##MS_SQLAuthenticatorCertificate## 的 SID - 这是我找到的最后一张最佳照片,扫描了数百个 SQL Server,它真的很独特 - 我以为我终于找到了它,直到我将 Service Pack 应用于一台服务器并发现 SID 已更改
任何想法如何唯一标识 SQL 实例(如 SQL 实例 SID)将不胜感激,因为我迷路了
编辑:我不是在管理所有 SQL 服务器。无法对超出范围的设备进行修改,因此寻找一些可以在 SQL2005+ 上运行的“内置”方式
我最近看到了在 SQL Server 代理下配置的某种 SQL 作业的导出,我也想实现它。不幸的是,我没有任何关于该报告作者的踪迹来询问他/她关于报告创建的问题,因此在这里寻求帮助,因为我没有运气在谷歌上搜索它或在这里搜索。
报告是在 excel 中的(所以我猜最初是一些 csv 或者直接是 xls)并且包含 SQL 实例中的每一个作业,每行一个步骤,最重要的是还包含每个作业步骤的脚本内容和一些进一步的细节。
例如,由于 SQL 仅具有默认作业 syspolicy_purge_history,因此导出的每个步骤将包含 3 行。
我似乎无法在导出中找到它作为任何构建,所以我想可能有一些查询,或者我在某处错过了这个
任何人都知道任何此类报告?欢迎任何帮助