标签: sql-server

在 SSMS 中看不到 SQL Server 代理

我的笔记本电脑上安装了 SSMS 2012,主机上安装了 SQL Server 2012,但是当我尝试安排 sql 作业时,我没有在左侧列表中找到“SQL Server 代理”!!?

sql-server ssms sql-server-2012 sql-server-agent

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

SQL Server 2008:高 CPU 历史查询

我们有一个带有 15 个数据库的 SQL Server。这被每个数据库中的许多用户同时使用。最近,我们开始从该服务器收到高 CPU 警报。当警报出现时,我可以跟踪到确切的用户和查询。

我们无法在此服务器上打开 SQL Server Profiler。我想知道我们是否可以使用任何脚本获取有关在任何数据库(导致高 CPU)中运行的历史昂贵查询的信息。例如 - 我需要过去 4 小时内最昂贵的查询以及数据库名称和用户名。

sql-server-2008 sql-server profiler

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

多个可为空列的唯一约束Sql Server

我们有一个包含以下列的 PriceCombo 表:id(非空)、a_id(空)、b_id(空)、c_id(空)、折扣(非空)。我们正在使用此表来确定分配各种商品组合的价格。

a_id = id of region
b_id = id of merchandize category
c_id = id of customer category
Run Code Online (Sandbox Code Playgroud)

所以基本上,我们总是知道 a、b 和 c,但我们有一个灵活的折扣方案,这样每笔销售都按照我们能找到的最具体的规则进行折扣。

我们的问题是我们无法防止数据库中的重复,例如,我们希望防止在 a_id、b_id 和 c_id 中具有相同值的两行

a_id=1, b_id=1, c_id=1    and
a_id=1, b_id=1, c_id=1 
Run Code Online (Sandbox Code Playgroud)

不被允许和

a_id=1, b_id=1, c_id=null   and
a_id=1, b_id=1, c_id=null
Run Code Online (Sandbox Code Playgroud)

不被允许,但

a_id=1, b_id=1, c_id=null  and
a_id=1, b_id=null, c_id=null
Run Code Online (Sandbox Code Playgroud)

是允许的,因为这些在这 3 列方面不相同。

我在任何地方都没有找到关于如何创建唯一约束的答案,该约束既跨越多列又允许空值但不允许“相同”(至少在约束中指定的列方面)行

sql-server-2008 sql-server constraint unique-constraint

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

SQL Server 中的公制到标准单位转换

我给出了两个表格的简化版本,如下所示。

表记录

ID  unit  val
--- ---   ---
1   KV    3
1   BAR   4
2   KV    7
2   KG    5
3   C     37
Run Code Online (Sandbox Code Playgroud)

表单位

unit    convUnit    formula
---     ---         ---
KV      CV          @val * .865
KG      lbs         @val / 2.205
BAR     PSI         @val / 14.504
C       F           @val * 9/5 + 32
Run Code Online (Sandbox Code Playgroud)

我将无法更改表结构。

我知道哪个单位将转换为哪个单位(即我知道 KV 将转换为 CV,KG 将转换为磅等..)。

请注意,公式是一varchar列,我从表格tblRecords.unit中引用了tblUnit.unit

但我的问题是如何在单个查询中动态计算公式。即我想要以下输出。

ID  unit    val     convVal(column will be counted on the fly using formula stored in tblUnit.formula …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server t-sql

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

什么阻止了“SELECT...WITH(NOLOCK)”?

在关注 BrentOzar 的“索引重建期间离线多少? ”时,我很好奇运行:

SELECT Quantity FROM [Production].[TransactionHistory]  WITH(NOLOCK)
Run Code Online (Sandbox Code Playgroud)

在执行上述文章中的重建时,观察到它被延迟,直到索引重建完成

什么是阻塞SELECT ... WITH(NO LOCK)以及如何避免它?

更新:
Windows NT 6.1 上 的 Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
企业评估版(64 位)(内部版本 7601:Service Pack 1)

index sql-server index-tuning

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

为什么 SQL Server 不使用 Max Server Memory 设置?

我有一台带有以下内容的 SQL Server 机器:

  • Windows 2003 Enterprise SP2(32 位)
  • SQL Server 2005(32 位)
  • 12GB 内存
  • /PAE 开关在 boot.ini 中设置
  • 6 个 SQL 实例,全部启用 AWE
  • 机器上没有运行其他应用程序。

我将最大服务器内存使用量设置为我认为可接受的值(合计约 10GB,为 Windows 留出 2GB)。我使用以下查询来显示缓冲池和非缓冲池的总 RAM 使用量。我还展示了 MAX SERVER MEMORY 设置。每个实例上的数据库都比分配的 RAM 大得多,即使有几个实例比其他实例得到了更多的使用。实际使用的内存不应该总是非常接近 MAX SERVER MEMORY 设置吗?我发现了一个让我好奇的差距。

DECLARE @TotalRam as decimal (10,2)

--NON-BUFFER POOL
SET @TotalRam = (SELECT sum(pages_allocated_count)/128.0 [Non-Buffer (MB)]
from sys.dm_os_memory_cache_entries
where pages_allocated_count > 0)

--BUFFER POOL
SET @TotalRam = @TotalRam + (
SELECT CAST(COUNT(*) * 8/1024.0 AS DECIMAL (10,2))  AS [Buffer Pool …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server memory windows-server

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

空的 SQL Server 2000 LDF 文件

我有一个 1 GB.LDF的测试数据库,我想将其缩小。如果需要,我很乐意删除其内容。

如何为 SQL Server 2000 执行此操作?

我尝试了以下方法但无济于事:

BACKUP LOG Database_TEST with truncate_only
DBCC SHRINKFILE (Database_TEST_Log, 1000)
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2000

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

SQL Server 2012 Express:如何限制数据库的大小和保留策略?

我不经常使用数据库,我想确保我以正确的方式处理这个问题。

我想将数据库的文件大小配置为不超过 9 个演出。当数据库达到此文件大小限制时,我希望它清除 25%% 的最旧记录以容纳新记录。

这是我可以/应该在数据库服务器本身上配置的东西,比如一次性最大设置配置,还是必须由更新数据库的程序来处理(它会检查容量并告诉它何时清除记录)。

我不是 DBA,所以我不确定这通常是如何处理的。

sql-server sql-server-2012

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

事务隔离级别的隐式更改如何、何时以及为何发生?

RCSI(读提交快照隔离)是更改 SQL Server 中(默认)读提交隔离级别行为的数据库设置。

据我了解,这是 MSDN 博客文章“并发系列:最小化更新程序之间的阻塞”中的 sripts 的上下文,它告诉我们:

  • “使用 RCSI 的第二个技巧也不起作用,并且更新被行上的 session-1 阻塞在 X 锁后面,(C1 = 1)。原因是以下 UPDATE 语句在比读取提交更高的隔离级别执行。

    update basic_locking set c2 = 1000 where c1 = 2

    这是显示阻塞的输出

    TA 的隐式提升是水平

    解决方案:这里有两个选择来解决这个问题:”

“输出”如何说明隐式默认隔离级别(已提交读)的隐式提升?

如何在某些语句的上下文中检查真正的隔离级别“跳跃”?

什么时候期待它们,它们为什么会发生?

sql-server concurrency transaction locking isolation-level

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

LDF 文件中的日志是否在检查点后被删除?

使用fn_dblog我可以获得我的数据库的在线事务日志的活动部分。

但是在每个检查点之后,我只能看到 2 个条目显示检查点的开始和检查点LOP_BEGIN_CKPT的结束LOP_END_CKPT

我想知道之前的日志是在每个检查点之后删除还是只是因为dbi_checkptLSN位于引导页面中的值指示最新的 LSN而被忽略?

如果dbi_checkptLSN是我能够移动该指标的结果,如果是,如何移动?

如果没有,并且没有删除日志,我如何访问以前的日志?

sql-server checkpoint

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