标签: sql-server

查找缺失的索引

可用于在 mssql 2008 中查找缺失索引的工具?我们可以使用数据库引擎优化顾问找到丢失的索引吗

index sql-server-2008 sql-server

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

在我不知情的情况下更改了列的序数位置

我有一个乱序的列(通常,不是在 select 语句方面),我只是不知道它是如何变成那样的。

我一直在研究这个很长一段时间,结果是空的。我也无法在测试中重现它。

我已经通知开发人员,他们不允许运行未明确命名列的查询,正是出于这个原因。

然而,与此同时,我不知道我们是如何走到这种地步的,这让我很抓狂。

sql-server

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

无法收缩事务日志

这里有点令人头疼。

我有一个数据少于 1GB 的数据库,但有一个 40GB 的日志文件。事务日志每天备份,这个数据库没有很多活动;大约每周一次,它记录新的工资单信息,然后为报告目的反刍这些数据。数据库设置为自动收缩。

运行sp_spaceused @updateusage = true产生以下信息:

database_name   database_size   unallocated space
PayrollImports  39412.06 MB 105.00 MB

reserved    data    index_size  unused
321728 KB   278640 KB   42816 KB    272 KB
Run Code Online (Sandbox Code Playgroud)

运行DBCC shrinkfile (N'PayrollImports_log', 1 , notruncate)产生以下结果:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456
Run Code Online (Sandbox Code Playgroud)

...之间的差异UsedPagesEstimatedPages被神秘,但我继续DBCC shrinkfile (N'PayrollImports_log', 1 , truncateonly),并得到:

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
19  2   4991088 3456    4991088 3456
Run Code Online (Sandbox Code Playgroud)

在这一点上没有任何改变。日志文件仍然是 40GB。所以我想,也许我有一些公开的交易。运行dbcc …

sql-server-2005 sql-server maintenance transaction-log

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

SQL Server 在什么情况下对 tempdb 进行加密?

何时使用透明数据加密对 tempdb 进行加密?什么配置等导致 tempdb 以这种方式加密?

sql-server encryption tempdb transparent-data-encryption

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

嵌套 - 关键字“WITH”附近的语法不正确

与内与

还行吧

    WITH CS AS (
      SELECT      'ab' as a
    )
    SELECT * from cs
Run Code Online (Sandbox Code Playgroud)

http://data.stackexchange.com/mathematics/revision/138658/170321/comment-partition-by-question

但是,一旦我用第二个包裹它with

with PS as (
        WITH CS AS (
          SELECT      'ab' as a
        )
        SELECT * from cs
        ) select * from PS
Run Code Online (Sandbox Code Playgroud)

我收到这个错误,

Incorrect syntax near the keyword 'WITH'. Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon. …

sql-server

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

查询完成后断开连接的 SSMS 命令

在 SQL Server Management Studio 中,是否有任何方法(例如 SQLCMD 命令或其他东西)让 SQL 脚本窗口在查询执行完成后立即自动断开连接?

sql-server ssms

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

在 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 不使用 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
查看次数