小编mar*_*c_s的帖子

获取整个 SQL Server 数据库统计信息的最有效方法

我要做的是查看我们的数据库并锁定所有auto-shrink设置,以及处理哪些数据库/表高度碎片化。

是否有我可以运行的特定脚本来获得每个数据库的好主意?

我知道我可以在每个表级别(至少 SQL Server 2005)运行以下内容:

DBCC SHOWCONTIG ('DB.TABLE');
Run Code Online (Sandbox Code Playgroud)

但是我可以运行什么来显示数据库中的所有表?

谢谢

sql-server-2005 sql-server

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

检查何时将行插入到 SQL Server 上的表中?

是否可以检查何时将特定行插入到 SQL Server 中的特定表中?如果这有帮助,该表有一个索引。

我需要为已经插入行的现有表执行此操作。

谢谢。

sql-server

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

SQL Server 中的 MDF 和 LDF 内容

比方说,我有一个单一的数据库.mdf.ldf文件。

数据库已分离,没有事务并且 SQL Server 已停止。

我假设所有数据都已经在.mdf文件中了?

.ldf文件基本上是空的?如果.ldf文件不为空,它包含什么?

如果我删除.ldf文件并手动创建一个.ldf与以前相同名称的新的 0 字节长文件,我是否能够再次附加数据库而不会丢失数据?

sql-server sql-server-2008-r2

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

ASPState 数据库锁定和增长问题

我们使用 ASPState 数据库在 SQL Server 2005 群集上保留 .NET 会话状态。我们在高峰期看到一些奇怪的行为

  • DeleteExpiredSessions 过程通过代理作业每分钟运行一次。有时这项工作需要花费几分钟来运行和删除过期的会话

  • 从应用程序到 ASPState 数据库的请求非常缓慢。我相信这是因为 DeleteExpiredSessions 过程在表上持有排他锁

代码:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[DeleteExpiredSessions]
AS
        SET NOCOUNT ON
        SET DEADLOCK_PRIORITY LOW 

        DECLARE @now datetime
        SET @now = GETUTCDATE() 

        DECLARE @tblExpiredSessions TABLE
        (
            SessionID nvarchar(88) NOT NULL PRIMARY KEY
        )

        INSERT INTO @tblExpiredSessions (SessionID)
            SELECT SessionID
            FROM [ASPState].dbo.ASPStateTempSessions WITH (READUNCOMMITTED)
            WHERE Expires < @now

        --EXPIRED SESSION LOGGING 
        /*
        DECLARE @ExpiredSessionCount Int;
        SELECT @ExpiredSessionCount = COUNT(SessionID) 
        FROM @tblExpiredSessions; …
Run Code Online (Sandbox Code Playgroud)

sql-server locking session

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

服务器崩溃后如何恢复复制

我们在一个 SQL Server 2005 实例上有两个数据库,它们之间有事务复制(3 个表作为文章)。该服务器同时充当发布者和分发者。

然后服务器上的 RAID 失败。然而,我们设法.mdf在崩溃之前分离并复制了几乎所有文件。

系统恢复后,我们重新安装了SQL Server,恢复了系统数据库(master、model、msdb)并将.mdf文件放在相同的路径下。于是开始了。

问题出现在复制中。在本地发布文件夹是空的,虽然本地订阅文件夹包含有问题的订阅。当我尝试添加新出版物时,我得到了:

新发布向导在检索发布名称时遇到一个或多个错误。

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)

无效的对象名称“dbo.syspublications”。(Microsoft SQL Server,错误:208)

我决定尝试删除左订阅(最终我设法)并禁用服务器上的发布和分发,这给了我:

SQL Server 无法禁用“someserver”上的发布和分发。

无效的对象名称“dbo.syssubscriptions”。EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK TRANSACTION 语句。先前计数 = 0,当前计数 = 1。 EXECUTE 之后的事务计数表示缺少 COMMIT 或 ROLLBACK …

replication sql-server-2005 sql-server transactional-replication

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

SQL Server 慢 DELETE 请求的解释

我想获得一些关于 SQL Server 删除行为的额外见解/推理。我们有一个相当大的数据库,超过 1800 GB。

其中有一些非常浅的表(只有几个整数列)有数百万行。当我们从这些浅表中删除 10,000 行时,删除查询通常非常快(最多几秒钟)。

我们还有一个表,其中的字段类型image存储平均 100 KB 的图像。当我们从这个表中只删除几千行时,需要一分钟多的时间。

虽然区别很明显(删除了更多的数据大小),但我很想了解更多关于 SQL Server 内部发生的事情。这样我就可以更好地理解后者的删除速度要慢得多。

任何人都可以请说明一下吗?

performance sql-server

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

SQL Server:如何创建只能从特定 HOSTNAME 或 IP 地址访问的用户

我有一个我依赖的愚蠢的应用程序,里面有硬编码的连接字符串。

为了提高我的 SQL Server 的安全性,我想让 SQL 用户与内部应用程序的硬编码相同,但我希望该用户只能从特定主机(IP 地址)使用 SQL Server。

security sql-server sql-server-2012

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

SQL Server TDE 的替代方案

由于包含透明数据加密功能的 SQL Server 企业版成本高,我正在寻找替代产品,但只找到了几个选项:

任何人都可以提供他们对上述任何一种产品的体验的详细信息(性能影响、易用性等)?

SQL Server TDE 的任何其他替代方案?

注意:我们目前使用的是 SQL Server 2008 R2 标准版。

sql-server sql-server-2008-r2 encryption transparent-data-encryption

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

如何更改数据库的 dbo 用户的登录名?

我刚刚在 Win8.1 的加入域的 VM 实例上成功安装了 SQL Server 2014 Express。

在我运行的安装过程中,我DOMAIN\Admin接受了将当前用户添加为 SQL 管理员的默认配置。但是,在完成后重新考虑后,我想使用该DOMAIN\DbAdmins组而不是域上的单个用户。

一切都很好。创建组,将其添加到 SSMS 中 SQL Server 的安全节点,将其置于 SysAdmin 角色中,授予“连接 SQL”安全性,然后我们就可以关闭并运行了——对吗?

没那么快。

安装程序映射DOMAIN\Admin到这两个数据库上的 dbo 用户:

  • 报表服务器
  • 报表服务器临时数据库

当然,dbo 不能被修改或删除。

我想在不卸载和重新安装 Reporting Services 的情况下执行此操作。有可能这样做吗?

security sql-server users logins sql-server-2014

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

SQL Server 代理记录操作和对作业所做的更改

有没有办法跟踪对 SQL Server 代理作业所做的更改?

如果您有理由相信有人在玩弄您的工作设置。您将如何继续跟踪是谁做的以及从哪里对单个工作进行了更改?

我正在考虑扩展事件的思路。

sql-server sql-server-agent jobs

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