标签: sql-server-2016

如何找到发送特定电子邮件的工作?

我有一份工作向一组用户发送不相关的电子邮件。

电子邮件的标题是Staging -> [AUPAIR] arrivalDate trigger issue

当我使用上面的标题查询 msdb 数据库中的作业表时,我没有得到答案:

USE [msdb]
GO
SELECT    j.job_id,
    s.srvname,
    j.name,
    js.step_id,
    js.command,
    j.enabled
FROM    dbo.sysjobs j
JOIN    dbo.sysjobsteps js
    ON    js.job_id = j.job_id
JOIN    master.dbo.sysservers s
    ON    s.srvid = j.originating_server_id
WHERE    js.command LIKE N'%Staging -> [AUPAIR] arrivalDate trigger issue%'
Run Code Online (Sandbox Code Playgroud)

只有当我改变我的查询如下时,我才能找到强盗工作:

USE [msdb]
GO
SELECT    j.job_id,
    s.srvname,
    j.name,
    js.step_id,
    js.command,
    j.enabled
FROM    dbo.sysjobs j
JOIN    dbo.sysjobsteps js
    ON    js.job_id = j.job_id
JOIN    master.dbo.sysservers s
    ON    s.srvid = j.originating_server_id
--WHERE    js.command LIKE N'Staging …
Run Code Online (Sandbox Code Playgroud)

sql-server database-mail jobs sql-server-2016 string-searching

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

我刚刚从表格列中删除了 19k 高分辨率图像,并且有一些关于缩小的问题

我们刚刚为我们的应用程序转移到一个新的图像存储方法,这意味着我们不再需要在数据库中存储图像字节数组。

为此,我UPDATE从单个表的列中删除了(通过声明)大约 19k 字节的包含高分辨率图像(大约 8 GB)的数组。如果没有图像,我不希望数据库会增长到现在的大小。再次请注意,我在这里没有删除行,只是将字段值设置为 NULL。

其他信息:

  • 列类型为 VARBINARY
  • 列上没有索引。

问题

  1. 我应该继续缩小数据库,然后为该表重建索引吗?
  2. 我读到的大多数场景都涉及在DELETE声明后缩小。我没有删除任何行,我只将所有行的字段值设置为 null。这有什么改变吗?
  3. 该列现已弃用,我们可能只想将其从表中删除;我相信这将需要重新创建表。我应该在删除列之前还是之后缩小数据库?

编辑: 我刚刚想到了另一种可能性。随着图像数据消失,最好只编写一个脚本来完全重建整个数据库,而没有列图像列。想法?

shrink sql-server-2016

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

SQL 如何将单租户数据库转换为多租户数据库

我们有一个遗留应用程序。出于某种原因,有人决定为每个客户创建一个数据库。所以我们有 500 多个具有相同架构的数据库。

我想转换成一个多客户端数据库。原始客户数据库没有 CustomerId。新的单一数据库确实如此。

我们正在考虑用视图替换旧的数据库,因此旧的应用程序插入/更新仍然可以工作。

老客户数据库:

CREATE TABLE [CustomerOne].[dbo].[CustomerTransaction]
(
    [CustomerTransactionid] [int] identity(1,1) primary key NOT NULL,
    [QuantityBought] [int] NULL,
)
Run Code Online (Sandbox Code Playgroud)

新报告数据库具有 CustomerId:

CREATE TABLE ReportingDB.[dbo].[CustomerTransaction]
(
    [CustomerTransactionid] [int] identity(1,1) primary key NOT NULL,
    [Customerid] [int] NOT NULL,
    [QuantityBought] [int] NULL,
)
Run Code Online (Sandbox Code Playgroud)

用视图替换旧数据库

create view [CustomerOne].[dbo].[CustomerTransaction]
as
select 
    [CustomerTransactionid]
    ,1 as [CustomerId]
    ,[quantitybought]
from ReportingDB.[dbo].[CustomerTransaction]
where Customerid = 1
with check option
Run Code Online (Sandbox Code Playgroud)

这失败:

-- Attempt inserting into View
insert into CustomerOne.dbo.Customertransaction 
(Quantitybought)
values (4)

Msg 515, Level 16, State …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 database-design sql-server sql-server-2012 sql-server-2016

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

备份或恢复被中止 - 可能是什么?

use master
go
ALTER DATABASE Apcore SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

RESTORE DATABASE Apcore
FROM DISK=N'C:\Backups\QG-V-SQL-TS$AIFS_DEVELOPMENT_APCore_FULL_20180909_230034.bak'
WITH  FILE = 1,  
MOVE N'APCoreDataPrimary' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreDataPrimary.mdf',
MOVE N'APCoreData1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreData1.ndf',
MOVE N'APCoreData_nonclusteredIndexes' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreData_nonclusteredIndexes.ndf',  
MOVE N'APCoreLog_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.DEVELOPMENT\MSSQL\DATA\APCoreLog_log.ldf',  
recovery,  NOUNLOAD,  REPLACE,  STATS = 1
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在开发人员的机器上恢复数据库时,出现上述错误。

我这样做的方式是:

  • 首先让我说我不担心 - 权限、索引、触发器、同义词等。
  • 我将备份文件(小于 1 GB)从 live 复制到她的本地机器
  • 做了restore filelestonly这是确定
  • 我不得不将数据库设置为 single_user 模式,因为有一些服务每秒钟都在尝试使用它
  • 准备好上面的脚本,并在运行它时收到该错误消息。

会是什么呢?

在此处输入图片说明

sql-server backup restore sql-server-2016

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

一个表可以同时具有聚集列存储索引和非聚集列存储索引吗?

一个表可以同时具有聚集列存储索引和非聚集列存储索引吗?

我看到了仅将聚集列存储索引与非聚集二进制行索引一起使用的示例策略。

当我尝试创建集群列存储和非集群列存储时,我收到错误:

Msg 35339, Level 16, State 1, Line 7
Multiple columnstore indexes are not supported.
Run Code Online (Sandbox Code Playgroud)

performance index sql-server columnstore sql-server-2016 performance-tuning

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

从视图生成 SQL 表 DDL

如何在一个脚本中从视图生成表结构?只需要数据类型,我正在寻找具有某种类型的动态 sql 的表创建脚本

(1) 可以删除主键/约束,

(2) 不在乎是否添加了 null/not null(但是如果有的话会很好)

我在下面提出了示例问题/答案,请随时对未包含在表中的其他数据类型进行代码审查、编辑/优化,特殊情况/问题/例外可能没有考虑在内。顺便说一下,是否有任何开源代码?

表 1 和 2:

create table dbo.Customer
(
     CustomerId int primary key,
     CustomerName varchar(255),
     ZipCode varchar(9)
)
create table dbo.CustomerTransaction
(
     CustomerTransactionId int primary key identity(1,1),
     CustomerId int,
     SalesAmount numeric (10,2),
     PurchaseDate datetime
)
Run Code Online (Sandbox Code Playgroud)

看法:

create view dbo.CustomerTransactionVw
as
select 
     ct.CustomerTransactionId,
     ct.SalesAmount,
     ct.PurchaseDate,
     cust.CustomerId,
     CustomerName,
     cust.ZipCode
from dbo.CustomerTransaction ct
inner join dbo.Customer cust
  on cust.CustomerId = ct.CustomerId
Run Code Online (Sandbox Code Playgroud)

预期的表创建脚本:

create table dbo.CustomerTransactionBigTable
(
     CustomerTransactionId int identity(1,1),
     CustomerId int,
     SalesAmount numeric (10,2), …
Run Code Online (Sandbox Code Playgroud)

sql-server view dmv sql-server-2016

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

NEWSEQUENTIALID 在许多表的数据库中是唯一的吗?

NEWSEQUENTIALID 在数据库中是唯一的吗?我们用 NEWSEQUENTIALID 在数据库中规划了许多表,同时插入并希望确保每个 guid 都是唯一的,无论它们是否在不同的表中。

常规 NEWID() 将保证数据库中的唯一性,并且有重复的机会是被小行星/闪电击中的机会,但是它们并不能缓解碎片问题。

这篇文章讨论了 Mac 地址,但是我想为上面特定的数据库指定问题。 /sf/ask/1988347511/

performance database-design sql-server sql-server-2016 performance-tuning

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

网络问题后的可用性组群集内存问题。如何转储 HADR 日志块消息池?

我们有一个四节点可用性组,一个站点中有两个节点,另一个数据中心中有两个站点外节点。我注意到在每个 WAN 问题发生后,WAN 连接出现波动,并且异地节点不断断开连接并重新连接(使用 AOAG 仪表板中的 AOAG 运行状况),主服务器的内存被“HADR 日志块消息池”消耗

SELECT  *
FROM    sys.dm_os_memory_clerks
ORDER   BY pages_kb DESC
Run Code Online (Sandbox Code Playgroud)

类型:OBJECTSTORE_SERVICE_BROKER
名称:HADR 日志块消息池

在最坏的情况下,当网络震荡数小时时,这个内存管理员最终会消耗超过 90% 的 SQL Server 内存,导致 SQL Server 停止运行(SQL 有 10GB 的内存“HADR Log Block Msg Pool”正在使用 9.8GB)。

有没有办法转储这个 HADR 日志块消息池?还是一开始就阻止它变得如此之大?到目前为止,我们唯一的解决方案是故障转移并重新启动机器。

没有错误,只是节点的日志断开连接并重新连接,以及重新连接后数据库重新硬化的日志。

随着越来越多的内存被“HADR 日志块消息池”占用,可用于其他所有内容的内存会下降,从而影响性能。通常这 10GB 的 RAM 适合这个 AOAG 组和使用。只有当 WAN 波动一段时间时,我们才会出现此问题。

我们可以在服务器上投入更多内存,但我认为这不会解决根本问题,它只会在严重损害性能之前为我们争取更多时间。

我同意网络是根本原因,但在问题解决并且 AOAG 恢复同步后,SQL 不会像大多数 SQL 内存管理员那样恢复/重新分配 RAM 给其他 SQL 内存管理员,这似乎很奇怪。

日志传送不起作用;这是一个事务性环境,我们需要近乎实时的,最好是实时的异地 DR。AOAG 小组 99% 的时间都在工作,并且几乎总是实时同步。我们正在尝试与网络团队合作以改善连接性,和/或可能使它只是断开连接而不是摆动。

系统信息
SQL 版本:SQL 2016 SP1 CU6 13.0.4457.0
操作系统版本:Windows 2012 R2 6.3.9600
服务器内存:12GB …

sql-server memory clustering availability-groups sql-server-2016

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

将任意 GUID 插入 [uniqueidentifier] 列是否需要“SET IDENTITY_INSERT”?

SQL Server 2016 和 2017 标准版

我需要将原始数据(来自另一个表)插入有两uniqueidentifier列的表中。

这是否需要我使用SET IDENTITY_INSERT Carrier ON

这是表:

SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

CREATE TABLE [dbo].[Parkingspace](
    [ParkingspaceId] [uniqueidentifier] NOT NULL,
    [AccountId] [uniqueidentifier] NULL,
    [ParkingspaceType] [smallint] NULL,
 CONSTRAINT [PK_ParkingspaceId] PRIMARY KEY CLUSTERED 
(
    [ParkingspaceId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

如果没有IDENTITY_INSERT选项,以下内容是否有效?(我认为应该,但这里的 DBA 非常喜欢这个IDENTITY_INSERT选项。)

INSERT INTO Parkingspace 
  (ParkingspaceID,AcountID,ParkingspaceType) …
Run Code Online (Sandbox Code Playgroud)

sql-server uniqueidentifier identity sql-server-2016 sql-server-2017

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

如何清除 SQL Server 中的临时数据库内容?

正如标题所暗示的,我将清除 SQL Server 中临时数据库的内容。SolarWinds 正在生成严重警报,我想清除 tempdb 工作文件和工作表。

我怎样才能做到这一点?我可以重新启动 MSSQLSERVER 服务以清除内容吗?

sql-server tempdb temporary-tables sql-server-2016

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