标签: sql-server

执行备份时,restore headeronly 有什么用?

当我使用以下查询监控我的备份时:

SELECT      command, percent_complete,
            'elapsed' = total_elapsed_time / 60000.0,
            'remaining' = estimated_completion_time / 60000.0
FROM        sys.dm_exec_requests
WHERE       command like 'BACKUP%'
or command like 'RESTORE%'
Run Code Online (Sandbox Code Playgroud)

我注意到在备份之前,SQL Server 只在备份之后执行还原标头。

我想知道它有什么用处,以及它的执行时间是否可以以某种方式减少。它似乎比实际备份花费的时间更长。

sql-server backup sql-server-2012

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

执行计划从何而来?

有没有办法可以确定计划是为特定查询生成的,还是在计划缓存中找到的?

sql-server execution-plan sql-server-2008-r2 cache

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

如何通过命令行在静默安装中指定SQL启动参数

我想通过启动参数修复SQL Server 2012 中的身份差距错误-T272

安装后如何自动执行此操作?我发现没有启动参数的安装参数。

sql-server installation sql-server-2012

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

如何在 SQL Server 2012 中将默认实例转换为命名实例?

如何在 SQL Server 2012 中将默认实例转换为命名实例?

我错误地选择了默认实例选项并安装了。现在我必须更改为命名实例。如何改变?

sql-server

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

返回插入时默认生成的唯一标识符

目标

在表中插入值后实时检索最新的guid值

问题

不知道怎么做

信息

  • 代码应该只指定地址邮政编码的新值
  • 表中可以有很多数据

桌子

CREATE TABLE [AddressBook]
(
    [testID] [uniqueidentifier] NOT NULL default newid(),
    [address] [nvarchar](50) NULL,
    [zipcode] [nvarchar](50) NULL
)
Run Code Online (Sandbox Code Playgroud)

sql-server uniqueidentifier t-sql default-value

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

用空格替换列中的特殊字符

我正在尝试编写一个用空格替换特殊字符的查询。下面的代码有助于识别行。(字母数字字符、逗号和空格有效):

SELECT columnA
FROM tableA
WHERE columnA like '%[^a-Z0-9, ]%'
Run Code Online (Sandbox Code Playgroud)

如何将替换函数集成到 select 语句中,以便结果集中除字母数字、逗号和空格之外的所有字符都替换为 ' '(空格)。这个不行:

SELECT replace(columnA,'%[^a-Z0-9, ]%',' ')
FROM tableA
WHERE columnA like '%[^a-Z0-9, ]%'
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 replace

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

为什么 suser_name() 不会反映 AD 帐户名称更改?

我们的一个用户的名称已合法更改,因此我们更改了他们的 Active Directory 用户名以匹配 - 从域\旧名称到域\新名称。但是,当此用户在存储过程中调用 suser_sname() 时,它返回旧名称,而不是新名称。

谷歌搜索让我找到了KB 946358,这表明他们的名字被缓存在服务器上并且没有更新,大概是因为 suser_name() 正在调用 LsaLookupSids。但是,该文章中的解决方法涉及重新启动服务器,即使是这样,我仍然想了解问题所在。

如果我将上下文更改为他们的上下文,则会返回正确的名称:

EXECUTE AS LOGIN = 'domain\newname'
GO
SELECT suser_name()   --returns 'domain\newname'
Run Code Online (Sandbox Code Playgroud)

...我会假设这也会调用 LsaLookupSids,因此会返回不正确的名称。我似乎不太了解这里的工作机制。

一些可能重要的观察结果:

  • 此用户在服务器上没有显式登录。但他们是这样做的 AD 组的成员。更改后的名称 (domain\newname) 出现在结果集中exec xp_logininfo 'domain\ADGroupName', 'members';域\旧名称没有。

  • 用户从存储过程中调用 suser_name(),从 Access 2003 MDB 中的直通查询调用。

  • 过去我们更改了大量用户的帐户名称,但仅在上周才发现此问题(上周进行了两次更改,似乎都出现了此问题)。

  • 服务器在 Windows 2008 R2 数据中心版上运行 Sql Server 2008 SP3 x64。

这是怎么回事?作为 DBA,我可以做什么或者我可以在哪里解决这个问题?

sql-server-2008 ms-access sql-server active-directory

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

SQL Server 中的批处理中止错误列表

在 SQL Server 中,如果 XACT_ABORT 关闭,则某些错误将终止当前语句(例如,向采用某些参数的存储过程提供不正确数量的参数),而某些错误将中止整个批处理(例如,向存储过程提供参数)不带参数的过程)。[参考]:http : //www.sommarskog.se/error-handling-I.html#scope-abortion

我想知道的是是否有一个明确的列表,列出哪些错误是批量中止,哪些是语句终止。

sql-server transaction error-handling sql-server-2012

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

CPU 调度器离线

我登录到一个新的客户端系统并运行 sp_blitz 以查看发生了什么变化。它报告说“ CPU Schedulers Offline ”对我来说是一个新的。

由于关联屏蔽或许可问题,SQL Server 无法访问某些 CPU 内核。

很公平,我运行基本查询

SELECT
    DOS.is_online
,   DOS.status
,   DOS.*
FROM
    sys.dm_os_schedulers AS DOS
ORDER BY
    1;
Run Code Online (Sandbox Code Playgroud)

那报告说我有 8 个设置为离线可见,43 个设置为在线。据我所知,该客户端上的任何人都不会故意设置任何 CPU 关联性。

我决定看看我是否可以解开它。当我查看属性窗口时,我看到 40 个可用的处理器,但没有一个设置为具有关联性。

在此处输入图片说明

为什么在 is_online 为 true 的 dm_os_schedulers 中有 40 个显示 43 个条目似乎也很好奇。8离线的cpu_id是32到39。

sys.configurations 似乎同意没有明确开启关联

name                 value  value_in_use  description
affinity I/O mask    0      0             affinity I/O mask
affinity mask        0      0             affinity mask
affinity64 I/O mask  0      0             affinity64 I/O mask
affinity64 mask      0      0             affinity64 mask …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 sp-blitz

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

选择按值均匀分布的分组数据

我想将表中的数据选择为 4 组,该表具有尽可能均匀分布的组中值的总和。我敢肯定我解释得不够清楚,所以我会尝试举一个例子。

这里我使用 NTILE(4) 创建 4 个组:

SELECT Time, NTILE(4) OVER (ORDER BY Time DESC) AS N FROM TableX

Time -  N
-------------
10  -   1
 9  -   2
 8  -   3
 7  -   4
 6  -   1
 5  -   2
 4  -   3
 3  -   4
 2  -   1
 1  -   2
Run Code Online (Sandbox Code Playgroud)

在上面的查询和结果中,为简洁起见,省略了其他列。

所以你也可以看到这些组如下:

  1    2    3    4
---  ---  ---  ---
 10    9    8    7
  6    5    4    3
  2    1    
---  ---  ---  ---
 18   15 …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2012

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