Mic*_*ite 4 sql-server windows-server
好的,故事就到这里。
我有一个安装了 SQL Server 2008 R2 Standard 的 Windows 7 Ultimate 机器,这是我从一个在我进入公司之前很久就离开公司的人那里继承来的。没有留下关于用户的文档。
除了能够设置sa
密码并且不需要盒子上当前的任何数据库之外,我不需要任何用户。
我不能从包装盒中取出 SQL Server 的唯一原因是我在这个办公室没有原始媒体,而且很难从另一个办公室获取媒体。我需要标准安装,因为我要加载的数据库之一的大小为 70GB(它们将图像存储在表中)。
有没有办法重新开始?
假设您可以访问该框(如果您需要恢复访问权限,请参阅 Kin 已经指出的链接),您需要:
删除所有用户数据库。请运行第PRINT
一个并确保您没有丢弃任何您可能会后悔的东西。您可能希望首先备份所有数据库以防万一。
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'
DROP DATABASE ' + QUOTENAME(name)
+ N';'
FROM sys.databases
WHERE name NOT IN (N'master',N'tempdb',N'model',N'msdb');
PRINT @sql;
-- EXEC master.sys.sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)删除所有非系统登录。再次,请运行PRINT
第一个命令,看看名单上非常谨慎。如果您通过 Windows 身份验证登录,我有一个过滤器可以防止自己丢失,但是如果您以sa
或类似的身份登录并且不想放弃您的 Windows 登录,您可能希望添加其他特定过滤器。
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql+= N'
DROP LOGIN ' + QUOTENAME(name) + ';'
FROM sys.server_principals
WHERE name <> N'sa'
AND name NOT LIKE N'##%'
AND name NOT LIKE N'NT [AS]%'
AND [type] IN ('R', 'S', 'U', 'G')
AND principal_id > 256
AND name <> SUSER_SNAME(); -- don't drop yourself!
PRINT @sql;
-- EXEC master.sys.sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)更正您保留的任何登录名的默认数据库。您可能会发现如果您的默认数据库不再存在,您可以将自己锁定。因此,将您的登录名设置为默认为master
or tempdb
:
ALTER LOGIN [DOMAIN\Login] WITH DEFAULT_DATABASE = tempdb;
Run Code Online (Sandbox Code Playgroud)更正任何引用旧数据库的作业/维护计划。您需要手动查看列表并确定与这些数据库相关的任何内容,否则它们将开始失败。您可以获得一个起始列表,但这不一定是一个完整的列表 - 它不会告诉您该作业是否使用引用具有三部分命名的数据库的即席 SQL 或调用这样做的存储过程. 谢天谢地,您不必担心同义词(除非某些邪恶的人将同义词放入系统数据库中)。
SELECT j.name
FROM msdb.dbo.sysjobs AS j
WHERE EXISTS
(
SELECT 1
FROM msdb.dbo.sysjobsteps AS js
WHERE js.job_id = j.job_id
AND js.database_name NOT IN (N'msdb',N'master',N'tempdb',N'model')
);
Run Code Online (Sandbox Code Playgroud)
事实上,您可能希望首先运行此步骤,以便您可以在所有作业开始失败之前清理它们。我还将验证所有剩余的工作仍然具有有效的所有者。删除任何登录后,您必须更正以下任何作业:
SELECT j.name FROM msdb.dbo.sysjobs AS j
WHERE NOT EXISTS
(
SELECT 1
FROM sys.server_principals AS p
WHERE p.sid = j.owner_sid
);
Run Code Online (Sandbox Code Playgroud)除了能够设置 sa 密码之外,我不需要任何用户,并且不需要当前盒子上的任何数据库。
您可以使用多种方法来重置 sa 密码,或者参阅 Aaron 关于 MSSQLTips 的文章。要删除所有数据库,您可以使用
select 'DROP DATABASE '+ name + char(10) + 'go'
from sys.databases where database_id > 4
Run Code Online (Sandbox Code Playgroud)
我无法从框中删除 sql 的唯一原因是因为我在这个办公室中没有原始媒体,并且从其他办公室获取媒体时会遇到困难。我需要标准安装,因为我想要加载的数据库之一大小为 70GB(它们将图像存储在表中)。
为什么不安装另一个 SQL Server 实例,例如名为的命名实例INSTANCE2
或类似的适合您需要的实例。
顺便说一句,没有 Windows 2007 版本。