小编mar*_*c_s的帖子

是否建议使用 Identity 作为主键的替代?

我们可以声明一个Identitylikeid_numid_num增加唯一的数字。

CREATE TABLE new_employees
(
  id_num int IDENTITY(1,1),
  fname varchar (20),
  minit char(1),
  lname varchar(30)
)
Run Code Online (Sandbox Code Playgroud)

是否建议将其Identity用作替代方案,Primary key因为Identity为每一行提供了唯一编号?

sql-server primary-key identity

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

升级后,SQL Server AlwaysOn 数据库卡在“未同步”/“恢复”模式。错误:无法打开数据库“...”版本 782

在测试从 SQL Server 2014 SP1 (12.0.4422.0) 到 SQL Server 2016 CTP 3.2 (13.0.900.73) 的升级时,我遵循推荐的更新过程并遇到了一个问题,即故障转移后数据库无法在旧的主数据库上启动到更新的辅助。我们的设置是一个主副本和一个辅助副本,我完成的步骤是:

  1. 删除同步提交辅助副本上的自动故障转移
  2. 将辅助服务器实例升级到新版本
  3. 手动故障转移到辅助副本
  4. 验证数据库在新的主副本上是否在线
  5. 将以前的主副本升级到新版本

升级辅助节点和故障转移使其成为主节点完全按预期工作。但是在升级以前的主副本后,我注意到其上的数据库在 SSMS 中列为Not Synchronizing / In Recovery。尝试访问它们也会生成错误消息:

数据库...无法访问。(对象浏览器)

通过我看到的 SQL Server 日志检查

无法打开数据库 '...' 版本 782。将数据库升级到最新版本。

查询master..sysdatabases表,确实是旧版本,升级过程中没有更新:

SSMS 系统数据库版本

不幸的是,日志没有指出它为什么没有更新,并且可用性组仪表板只给出了一个通用警告,表明某些可用性数据库数据同步状态不健康,没有任何原因。

我尝试使用 TSQL 分离数据库或将它们设置为离线以“踢”它进行更新,但由于它们是 SQL AG 的一部分,因此这些命令不起作用。

当数据库是 SQL AG 的一部分时,如何将数据库升级到最新版本?

sql-server upgrade availability-groups sql-server-2016

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

我们生产 SQL Server 上的主要性能问题,我将如何解决这个问题?

这个问题基本上是这个问题的后续问题:
SQL Server 2016 的奇怪的性能问题

我们现在使用这个系统提高了效率。虽然自从我上一篇文章以来,另一个应用程序数据库被添加到这个 SQL Server 中。

这些是系统统计信息:

  • 128 GB RAM(SQL Server 的最大内存为 110 GB)
  • 4 核 @2.6 GHz
  • 10 GBit 网络连接
  • 所有存储均基于 SSD
  • 程序文件、日志文件、数据库文件和 tempdb 位于服务器的不同分区上
  • 视窗服务器 2012 R2
  • VMware 版本 HPE-ESXi-6.0.0-Update3-iso-600.9.7.0.17
  • VMware Tools 版本 10.0.9,内部版本 3917699
  • Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) 2016 年 10 月 28 日 18:17:30 版权所有 (c) Windows Server 2012 R2 Standard 6.3(内部版本 9600)上的 Microsoft Corporation 标准版(64 位): (管理程序)

在此处输入图片说明

我们的系统现在存在重大的性能问题。非常高的 CPU 使用率和线程数: 在此处输入图片说明

等待活动监视器的统计数据(我知道它不是很可靠)

在此处输入图片说明

sp_blitzfirst 的结果:

在此处输入图片说明

sp_configure 的结果:

在此处输入图片说明

高级服务器设置(不幸的是只有德语)

在此处输入图片说明

MAXDOP …

performance sql-server vmware cpu

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

如何从 SQL Server 2008 R2 的备份集中删除备份

标题几乎总结了它。我们的备份磁盘空间不足,需要从集合中删除旧备份。我似乎无法找到任何有关此的信息。

backup sql-server-2008-r2 disk-space

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

SQL Server AFTER INSERT 触发器

我希望married在使用marital_status列上的文本进行插入后触发此触发器,这是我目前所拥有的

ALTER TRIGGER [dbo].[marriage]
ON  [dbo].[applicant_personal_info]
AFTER INSERT
AS 
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF (SELECT [marital_status] FROM inserted) = 'married'
 BEGIN
     INSERT INTO [dbo].[applicant_marriage_info]([dom])
     VALUES('abc')
 END
END
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

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

压缩和存储 SQL Server 备份的最有效方法是什么?

我一直在对压缩和存储 SQL Server 备份的不同方法进行一些测试(使用 SQL Server 2008 R2 企业版),我想知道最有效的压缩算法是在 SQL 之外长期存储这些备份内部压缩算法。

我不担心物理存储或磁带驱动器或任何东西,只是试图将我们的 3TB 数据和日志文件变成最小的单个文件。

那么,例如,是 .zip 还是 .7z?或者我的数据库中有太多变量无法准确估计什么是最有效的,而我只需要做一些测试?或者 SQL Server 的内部压缩是我能得到的最好的吗?

backup sql-server-2008-r2 compression

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

SQL Server 使用活动连接还原数据库

我正在尝试在 SQL Server 实例上运行此 SQL 脚本,以将测试数据库恢复到实时数据库的较新副本。

RESTORE FILELISTONLY
   FROM disk = '\\staging_server\path\to\db_backup.bak'    
-- Restore the files for 
RESTORE DATABASE Test_DB
   FROM disk = '\\staging_server\path\to\db_backup.bak'
   WITH replace,
   MOVE 'Test_DB' TO 'D:\R2_BIN\Test_DB.mdf', 
   MOVE 'Test_DB_log' TO 'D:\R2_BIN\Test_DB_log.ldf', 
   stats = 5
GO
Run Code Online (Sandbox Code Playgroud)

但是,在运行脚本时,我收到以下错误。

消息 3101,级别 16,状态 1,第 5 行
,无法获得独占访问权限,因为数据库正在使用中。
消息 3013,级别 16,状态 1,第 5 行
RESTORE DATABASE 异常终止。

有什么方法可以强制执行此操作,并终止完成它所需的任何连接?我试图关闭任何可能连接到数据库的应用程序,但我根本无法识别一些连接。我的用户名中有几个,但我只打开了一个 SQL Server Management Studio 实例。

无论如何,有没有办法杀死与特定数据库的所有连接?这个实例上运行着相当多的数据库,所以如果我能帮上忙,我不想只是关闭并重新启动实例。

sql-server sql-server-2008-r2

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

如何通过命令行在静默安装中指定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万
查看次数

获取存储过程结果列类型

我试图获取存储过程返回的任何内容,以及列名及其类型。我可以用表来做到这一点,但我无法弄清楚存储过程。我尝试过,sp_columns但只能使其适用于表格。

我也尝试过这样的事情,但我不确定我应该匹配什么。

SELECT * 
FROM SYS.PROCEDURES (NOLOCK) AS AA
INNER JOIN SYS.SCHEMAS (NOLOCK) AS BB ON (AA.schema_id = BB.schema_id)
INNER JOIN SYS.COLUMNS (NOLOCK) AS CC ON (AA.object_id = CC.object_id)
Run Code Online (Sandbox Code Playgroud)

例如:

USER_ID VARCHAR(200)
Run Code Online (Sandbox Code Playgroud)

我只需要存储过程返回的列名及其数据类型。如果重要的话,SQL Server 版本是 2014。

有任何想法吗?谢谢。

sql-server stored-procedures datatypes

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