标签: sql-server

SQL Server Management Studio 突出显示一个似乎不是保留字的词

Set出于所有显而易见的原因,我不喜欢用保留字(即)命名对象。

因此,当 SSMS 以蓝色突出显示某个单词时,我会重新考虑对对象的命名。

每隔一段时间,我就会看到一个突出显示的词,但它似乎不在保留词列表中。在这种情况下,单词pool.

SSMS 是否使用更严格的约定来突出显示保留字?

sql-server

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

AlwaysOn - 添加辅助副本的问题

我在我的笔记本电脑 ( testlab )上安装了 AlwaysOn和三个虚拟机,其中一个是域控制器,两个托管 SQL Server 实例(计划作为一个主副本和一个辅助副本)。一切都很顺利,直到我想将辅助副本添加到可用性组。

请找到随附的屏幕截图。我已经在 TCP/IP 设置中将端口更改为 1433,并且还在 Windows 防火墙中为 SQL Server 添加了一个例外。两台服务器都在同一个集群网络中。不知道我在这里还缺少什么。

在此处输入图片说明

sql-server availability-groups hadr

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

将 varchar 转换为 int,将 0 以下的任何值转换为 0

我将值从 SQL Azure 中的临时表插入到生产表中。临时表中的值是 varchar,而生产表中的目标值是 tinyint(它是人类的年龄字段,所以我认为最多 255 就足够了;))

问题是由于源系统中的错误,我们倾向于将一些值设为 -1 或 -2,而它们应该是 0。这会导致问题,因为 TINYINT 仅支持 0 到 255 的值(也因为这实际上是错误的)。我想知道是否有某种 case 语句可以用来将值转换为 0,如果它们低于 0,或者如果它们落在 0-255 范围之外?

sql-server t-sql cast

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

Sql-Server 唯一约束但具有非唯一数据

我继承了这个数据库,它有一个定义如下的表:

CREATE TABLE home_tickets(
    id int IDENTITY(1,1) NOT NULL,
    identifier nvarchar(45) NOT NULL,
    start_date_time datetime NOT NULL,
    revised bit NOT NULL,
    agency_code nvarchar(100) NOT NULL,
    archived tinyint NOT NULL,

    CONSTRAINT PK__home_tic__3213E83F236943A5 PRIMARY KEY CLUSTERED (id ASC) WITH (
        PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY,

    CONSTRAINT UQ__home_tic__969168722645B050 UNIQUE NONCLUSTERED (identifier ASC) WITH (
        PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY …
Run Code Online (Sandbox Code Playgroud)

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

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

合并两个表

在SQL Server 2008 R2我有一个名为的主表Employees,其中包含大约 20 个字段。我有第二个电子表格,其中包含除 5 之外的所有字段UpdateToEmployees,我需要合并这些字段,Employees但仅在值不相同的地方。

执行此操作的最有效方法是什么?我的思考过程(可能很长)是:

  1. 运行 ASelect语句以获取值不相同的行
  2. 获取该结果集并插入到临时表中exists,用是/否值标记一个字段
  3. 如果该字段exists包含 yes 值 - 运行更新查询
  4. 如果该字段不exists包含值 - 运行插入查询

使用下面的 DDL - 我如何加入 empID 并更新记录 where when matched= Yes 或 True(无论它返回的是什么)并插入当前不存在的记录Employees

Create Table Employees
(
  empid varchar(50)
  ,empaddress varchar(500)
  ,phone varchar(12)
  ,emcontact1 varchar(500)
  ,emcontact2 varchar(500)
  ,active varchar(10)
  ,manager varchar(50)
  ,paygrade int
)

Insert Into Employees (empid,empaddress,phone,emcontact1, emcontact2, active, manager, paygrade) VALUES …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 merge

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

使用 SQL Server TDE - 加密 0%

我正在为 SQL Server 使用 TDE。查询证书:

select database_name = d.name,
dek.encryptor_type,
cert_name = c.name
from sys.dm_database_encryption_keys dek
left join sys.certificates c
on dek.encryptor_thumbprint = c.thumbprint
inner join sys.databases d
on dek.database_id = d.database_id;
Run Code Online (Sandbox Code Playgroud)

输出:

database     encryptor        cert_name
tempdb      ASYMMETRIC KEY    NULL
TDE_Test    CERTIFICATE       TestZert3
Run Code Online (Sandbox Code Playgroud)

查询加密状态:

select db_name(database_id), encryption_state,   
percent_complete, key_algorithm, key_length
from sys.dm_database_encryption_keys
Run Code Online (Sandbox Code Playgroud)

输出:

database  encrypt_state percent_complete key_algorithm
tempdb      3             0              AES 256 
TDE_Test    3             0               AES 256
Run Code Online (Sandbox Code Playgroud)

为什么complet_percent 为0?

sql-server transparent-data-encryption

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

使用探测残差识别执行计划

我正在尝试找出具有Probe Residual.

需要了解以下内容

  1. 哪个物理和逻辑运算符有这个 Probe Residual
  2. 查询中该运算符的成本百分比是 多少
  3. 相关执行计划
  4. 查询文本

以下是我的一次尝试——但我被困在获取其他细节上。如何获取这些详细信息?

注意:我使用的是 SQL Server 2012

WITH XMLNAMESPACES
(
    DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan'
)
SELECT
    DECP.cacheobjtype,
    DECP.objtype,
    DECP.plan_handle,
    DEQP.objectid,
    DEQP.query_plan,
    DEST.[text]
FROM sys.dm_exec_cached_plans AS DECP
CROSS APPLY sys.dm_exec_query_plan(DECP.plan_handle) AS DEQP
CROSS APPLY sys.dm_exec_sql_text(DECP.plan_handle) AS DEST
WHERE
    1 = DEQP.query_plan.exist(
        '//RelOp[
            @PhysicalOp = "Hash Match"
            ]')
Run Code Online (Sandbox Code Playgroud)

甲探头残余例

在此处输入图片说明

下面引用 Grant Fritkey 和 Rob Farley 的博客/文章

  1. 哈希匹配上的探针残差 - 可怕的 DBA 之家
  2. 当你有一个哈希匹配时探测残差——执行计划中的隐藏成本

xml sql-server execution-plan sql-server-2012 plan-cache

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

从 Select 语句返回结果并在变量中存储计数

我想执行我的 select 语句,但也将返回的行数存储到一个变量中。这就是我的 DDL 的设置方式,如何将 Select 语句中的行数存储在我的变量中@returnedrows

Declare @returnedrows int;

Insert Into pinkpurplegreen (field1, field2, field3, field4, field5)
Select field1, field2, field3, field4, field5
FROM blue

Select * FROM pinkpurplegreen
Run Code Online (Sandbox Code Playgroud)

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

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

SELECT SERVERPROPERTY('ProductUpdateLevel') 显示 NULL

早安专家,

我已将 CU7(累积更新 7)应用于 SQL Server 2012 EE SP1 实例。申请后,当我查询 SELECT SERVERPROPERTY('ProductUpdateLevel') 时,它显示为 NULL 而不是 CU7。能否请你帮忙。

sql-server

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

使用 SELECT INTO 和 FULL JOIN 创建第三个表时出现“非唯一列”错误

我正在尝试使用以下代码从两个现有表创建一个新表:

SELECT * INTO CustAndOrders from SalesLT.Customer 
FULL JOIN 
SalesLT.SalesOrderHeader
ON Customer.CustomerID=SalesOrderHeader.CustomerID;
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

Column names in each table must be unique. Column name 'CustomerID' in table 'CustAndOrders' is specified more than once.
Run Code Online (Sandbox Code Playgroud)

我的目的是创建第三个表,其中包含每个连接表中的所有字段。显然“CustomerID”出现了两次,这就是我要加入的。如果我删除 INTO 部分并作为 SELECT 语句执行,它会按预期工作。

sql-server t-sql

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