标签: tsql

如何使用 T-SQL 获得 SQL 实例的最小和最大内存分配?

我管理着大约 90 个 SQL Server 实例,需要查询来确定分配给每个实例的内存量。请注意,我不是在问如何设置它,只是为了在不使用 Management Studio 的情况下查看它当前的设置。

谢谢你的帮助。

memory sql sql-server tsql sql-server-2008-r2

16
推荐指数
1
解决办法
5万
查看次数

dbcc checkdb('XYZ', REPAIR_ALLOW_DATA_LOSS) 表示XYZ已经打开并且一次只能有一个用户

我有一个数据库 XYZ,它有一个损坏的日志文件,现在由于日志文件完全无法使用,这导致这个特定的数据库无法使用,我需要能够重建它。

我已经对这个过程进行了大量研究,但我陷入了 dbcc checkdb 的困境。

我运行了命令

alter database xyz SET single_user with immediate rollback
Run Code Online (Sandbox Code Playgroud)

随后

use master
dbcc checkdb('xyz',REPAIR_ALLOW_DATA_LOSS)
Run Code Online (Sandbox Code Playgroud)

但我一直遇到这个错误:

Msg 924, Level 14, State 1, Line 2
Database 'XYZ' is already open and can only have one user at a time.
Run Code Online (Sandbox Code Playgroud)

我研究的所有内容都表明数据库需要处于紧急模式,然后该数据库需要处于单用户模式。如果我将数据库恢复为多用户模式,则表明数据库需要处于单用户模式。好吧,我这样做,然后得到这个问题。

我跑了

select spid from master..sysprocesses where dbid = DB_ID('XYZ') and spid <> @@spid
Run Code Online (Sandbox Code Playgroud)

检查使用数据库的任何进程,但没有返回任何行,并且日志不显示有关正在恢复的数据库或任何此类性质的任何信息。DB 确实显示为“紧急情况”。

有任何想法吗?

sql sql-server tsql sql-server-2008

7
推荐指数
1
解决办法
3万
查看次数

复制 SQL Server 数据库

我希望以最小的数据和服务中断将数据库“移动”到不同的服务器。这些数据库的大小从 5GB 到 140GB 不等。

我已经看到甚至使用了 SQL Server 的一些各种数据传输工具,但我不确定最佳实践是什么(分离/重新附加、从备份还原、发送事务日志、镜像......)。

我最担心的是这些数据库有很多存储过程、用户权限和各种索引,我不想丢失它们并最终中断服务。

我最近的一个大胆想法是设置一个镜像,然后启动手动故障转移。但是,我宁愿在进行我以前从未做过的事情之前先问一下。

TL;DR 移动 SQL Server 数据库的最佳实践方法有哪些,以最大限度地减少服务中断的威胁。

database-administration database-mirroring sql-server-2005 tsql sql-server-2008

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

从备份文件中恢复数据库,其中文件名匹配 reg 表达式

我正在做以下事情:

RESTORE DATABASE UAT
FROM DISK = 'E:\Databases\backup\MY_LIVE_20120720_070001.bak'
WITH REPLACE
Run Code Online (Sandbox Code Playgroud)

但我希望能够使用忽略备份文件中文件名(代表日期)中的数字的文件位置。永远只有一个,'MY_LIVE_****.bak'但它的数字字符串每天都会改变。

目标是使用最新备份每周从实时恢复我的 UAT 实例 - 其中将只有与该字符串前缀匹配的文件,但数字/日期每周都会更改。

backup backup-restoration sql-server tsql

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

MSSQL:将数据库还原到备份集中的最新文件

我有一个处于 SIMPLE 恢复模式的 MSSQL 2008R2 DB,它定期备份

BACKUP DATABASE MyDB to DISK = 'Z:\MyDB.cbak'  WITH COMPRESSION
Run Code Online (Sandbox Code Playgroud)

这会定期运行,在文件中创建多个备份集。我想恢复所做的最新备份。

手动执行此操作我可以运行RESTORE HEADERONLY from Disk='Z:\DougHub.cbak',然后找到要运行的最新位置RESTORE DATABASE MyDB from Disk='Z:\MyDB.cbak' with FILE = <some number> 但我想自动执行此步骤,以便它始终恢复最新的备份。

如何创建一个 TSQL 命令来从备份文件中恢复最近的备份?

database sql-server tsql database-restore

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

将数据库用户还原到 SQL Server 2008 上的服务器登录名

我们有一个数据库备份,我们需要在没有数据库登录名的服务器上恢复......所有用户都在数据库中,所以我们希望我们可以通过这种方式恢复它?

我玩过 sp_change_users_login 但它只适用于创建新用户或将孤立的数据库用户链接到现有服务器用户(SID 不匹配但用户名相同)。

我需要从存储在数据库中的用户信息创建服务器登录。

sql-server tsql sql-server-2008

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

SQL Server 数据库备份存储

这是比较基本的问题。

我们每周对服务器上的所有数据库进行备份,大小约为 20GB。所有计划好的(缩小,备份)

我们将它们存储在网络驱动器上。

现在 .bak 文件的数量已经增加(假设有 10 个数据库备份,每个 10GB 每周产生 100Gb,每月产生 400Gb,每 6 个月产生 2400Gb)。

虽然现在购买硬盘空间很便宜,但问题是将它们存档以备将来参考。

存储备份的最佳解决方案是什么(假设我们需要将数据回溯到 6 个月到 1 年)?

注意:我使用的是 SQL Server 2000。

谢谢,

backup sql sql-server tsql

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