小编Ric*_*rno的帖子

如何将默认数据库更改为所有登录名?

我对 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-server t-sql logins

6
推荐指数
1
解决办法
7221
查看次数

如何唯一标识SQL实例

我需要找到一种方法来识别 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 uniqueidentifier instance

6
推荐指数
1
解决办法
5501
查看次数

使用步骤和脚本导出 SQL 代理作业

我最近看到了在 SQL Server 代理下配置的某种 SQL 作业的导出,我也想实现它。不幸的是,我没有任何关于该报告作者的踪迹来询问他/她关于报告创建的问题,因此在这里寻求帮助,因为我没有运气在谷歌上搜索它或在这里搜索。

报告是在 excel 中的(所以我猜最初是一些 csv 或者直接是 xls)并且包含 SQL 实例中的每一个作业,每行一个步骤,最重要的是还包含每个作业步骤的脚本内容和一些进一步的细节。

例如,由于 SQL 仅具有默认作业 syspolicy_purge_history,因此导出的每个步骤将包含 3 行。

我似乎无法在导出中找到它作为任何构建,所以我想可能有一些查询,或者我在某处错过了这个

任何人都知道任何此类报告?欢迎任何帮助

sql-server export ssms sql-server-agent

1
推荐指数
1
解决办法
7361
查看次数