标签: sql-server

如何检查我是否达到了 Express Edition 的大小限制?

我很迷惑。AFAIK SQL Server 2005 Express 的数据库 数据大小限制为 4GB 。但是我有以下结果sp_spaceused

数据库的实际大小是多少

  1. 如何检查我的数据库是否达到了大小限制?
  2. 是未分配的空间space left直到我达到限制吗?
  3. 我还剩多少空间?
  4. 是否index_size在极限算?

sql-server-2005 sql-server sql-server-express limits

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

锁使用的内存

我有点好奇,具有 128 GB 数据库 RAM 大小的 SQL 2012 企业版之一是 370 GB 并且还在增长,锁 (OBJECTSTORE_LOCK_Manager) 内存管理员使用的内存量显示为 7466016 KB。我也可以通过查看性能计数器来确认select * from sys.dm_os_performance_counters where counter_name = 'Lock Memory (KB)'

但是,当我运行查询时

select count(*) from sys.dm_tran_locks
Run Code Online (Sandbox Code Playgroud)

它只显示了 16 个锁。那么什么是使用超过 7 GB 的锁。有办法查到吗?

这是否意味着一旦分配了锁的内存,SQL 还没有释放它?在过去的 1 小时内,我没有看到锁计数超过 500,但锁内存保持不变。

最大服务器内存为 106 GB,我们没有在内存中使用锁定页面,我在过去 12 小时内没有看到任何内存压力或错误日志中的任何错误。可用 MBytes 计数器显示超过 15 GB 的可用内存。

活动监视器始终显示 0 个等待任务,因此显然没有阻塞。

考虑到 SQL 服务器锁占用大约 100 字节的内存,7 GB 是大量内存,并试图找出谁在使用它。

我通过锁计数运行服务器仪表板报告最高事务,它说“当前系统上没有运行锁定事务。但是,锁内存仍然显示如上所述。数据库在夜间最忙。

sql-server-2008 sql-server memory sql-server-2008-r2 sql-server-2012

10
推荐指数
2
解决办法
5497
查看次数

我可以在装有 2008 R2 的机器上安装 SQL Server 2012 吗?

我使用 SQL Server 2008 R2 已经有一段时间了,它运行良好。现在我需要使用 SQL Server 2012。这会影响我现有的数据库吗?在运行 SQL Server 2008 R2 的计算机上安装 SQL Server 2012 涉及多少风险?

sql-server sql-server-2008-r2 installation sql-server-2012

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

获取失败或从未提交的事务

有什么地方可以查找 SQL Server 2012 中的失败事务吗?

sql-server transaction sql-server-2012

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

用另一个表中的数据覆盖表 - SQL

我们的用户想要从生产中刷新 QA 数据库,但想要两个表(我们称它们为 T1 和 T2)来保留原始 QA 数据。因此,我将两个表从 QA (DB1) 复制到临时 QA 数据库 (DB2)。然后从生产中刷新 DB1。刷新后,我想将 T1 和 T2 数据从 DB2 覆盖到 DB1,以便它可以包含预刷新 QA 值。

我做了以下工作:

  1. select * 
    INTO D1.dbo.T1
    FROM D2.dbo.T1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后从 prod 刷新 D1

  3. 然后使用以下步骤截断 T1:

    SELECT COUNT(*) AS BeforeTruncateCount
    FROM T1;
    GO
    TRUNCATE TABLE T1;
    GO
    SELECT COUNT(*) AS AfterTruncateCount
    FROM T1;
    GO
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在,当我返回将数据从 D2.T1 复制到 D1.T1 时,我收到错误消息,即数据库中已存在名为 T1 的对象。

我应该放下桌子并复制吗?

或者整个过程有没有更好的方法?

sql-server

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

数据库大小 - MDF 太大?

我正在维护一个 SQL Server 2005 数据库,该数据库承载大约 2.9Tb 的数据(2 x 1.45Tb - 我有一个 RAW 架构和一个 ANALYSIS 架构,因此基本上是摄取的数据的两个副本)。恢复模型很简单,.ldf大小为 6Gb。

无论出于何种原因,.mdf都是 7.5Tb。现在,分析表中可能只有 2-3 个额外的列,并且没有多少NVARCHAR(MAX)列,根据我的理解(可能有错误理解 - 如果我错了,请纠正我)可能会导致额外的空间分配。那是在刚刚缩小数据库之后 - 在此之前它约为 9Tb。有什么想法吗?

并且,如果您有其他问题,请告诉我 - 我对数据库管理和优化工作非常陌生(我通常不做这方面的工作:))。

非常感谢!

安德里亚

sql-server-2005 sql-server shrink

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

将 SELECT 授予用户和将他们添加到 db_datareader 角色之间有区别吗?

我被要求为数据库中的所有表授予SELECT,INSERTUPDATE给定用户。我最终将用户添加到db_datareader,并给予他们INSERTUPDATE在数据库级别。

但这让我想到,SELECT在数据库级别授予用户权限或将它们添加到db_datareader角色之间有什么区别(如果有)?是否有任何一种或另一种最佳实践?

security sql-server permissions role

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

如何找到未使用的索引?

我正在研究数据仓库。我有多达 200M 记录的表。其中一些表有大约 20 多个索引(我无法提供最初创建它们的原因)。这使得维护这些索引的工作变得过于痛苦,并且在性能和运行时都会直接影响 DWH 导入工作。

如何在每个表上找到最少使用的索引?(为了摆脱它们)

sql-server ssms

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

何时更改并行成本阈值

在检查性能问题时,我看到 CXPACKETS 的大量涌入,这表明我可能需要查看并行性和 MAXDOP 的成本阈值。

在对 MAXDOP 进行任何重大更改之前,我遵循了许多其他人的建议,包括 @mrdenny 在对 SQL Server 2008 的 CXPACKET 等待性能调整的回答中的建议和@aron-Bertrand 在处理 CXPACKET 等待中的回答- 设置成本阈值对于并行性。我已添加到维护中,以每晚完全更新统计数据。感觉这是一个明智的举动。

但是,对成本阈值进行修改仍然让我烦恼。

并行性的成本阈值应该在什么时候改变?有没有人有一个例子来说明(在检查了他们的查询和工作量的成本之后)他们对这个成本进行了更改?

如果这是在上一个问题中已回答的问题,请道歉。

谢谢!

performance sql-server

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

使用 SSDT 发布数据库更改,包括更改列的数据类型

我有一个在构建过程中自动发布的 SQL Server Data Tools (VS2012) 项目。一列最近从 更新intdecimal(18,4)。由于此更改,发布失败并显示错误

(49,1): SQL72014: .Net SqlClient Data Provider: Msg 50000, Level 16, State 127, Line 6 检测到行。架构更新正在终止,因为可能会发生数据丢失。(44,0): SQL72045: 脚本执行错误。执行的脚本: /* The type for column QuantityReceived in table [dbo].[Reconciliation_Receiving] 当前为 INT NOT NULL 但正在更改为 DECIMAL (18, 4) NOT NULL。可能会发生数据丢失。*/

IF EXISTS (select top 1 1 from [dbo].[Reconciliation_Receiving]) RAISERROR(检测到 N'Rows。由于可能发生数据丢失,模式更新正在终止。', 16, 127) WITH NOWAIT 批处理时发生错误被处决。

我明白为什么我会收到该错误,并且我知道可以通过禁用“如果可能发生数据丢失则阻止增量部署”标志来解决它。但是,非常强烈反对禁用该功能,因此它不会是一个可接受的解决方案。

我能想到的唯一其他解决方案是执行以下操作:

  1. 创建一个临时表并将现有表的内容复制到临时表中
  2. 截断现有表
  3. 让SSDT更新数据类型
  4. 从临时表填回数据

不过,这似乎非常笨拙且效率低下。

有更好的选择吗?

sql-server ssdt

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