SQL Server 2012 引入了“包含”数据库的概念,其中数据库需要的所有内容(好吧,几乎所有内容)都包含在数据库本身中。在服务器之间移动数据库时,这提供了很大的优势。那么,我想知道,这是否应该是我设计新数据库时的默认策略。
MSDN 列出了包含数据库的几个缺点,最大的缺点是缺乏对更改跟踪和复制的支持。还有其他人吗?如果我不打算使用这些功能,是否有任何理由不使用包含的数据库?
我有一个旧应用程序用作替代IDENTITY各种其他表中的字段的表。
表中的每一行都存储了 中LastID命名的字段的最后使用的 ID IDName。
有时,存储过程会出现死锁——我相信我已经构建了一个合适的错误处理程序;但是我很想知道这种方法是否像我认为的那样有效,或者我是否在这里吠错了树。
我相当肯定应该有一种方法可以访问这个表,而不会出现任何死锁。
数据库本身配置了READ_COMMITTED_SNAPSHOT = 1.
首先,这是表:
CREATE TABLE [dbo].[tblIDs](
[IDListID] [int] NOT NULL
CONSTRAINT PK_tblIDs
PRIMARY KEY CLUSTERED
IDENTITY(1,1) ,
[IDName] [nvarchar](255) NULL,
[LastID] [int] NULL,
);
Run Code Online (Sandbox Code Playgroud)
以及该IDName字段上的非聚集索引:
CREATE NONCLUSTERED INDEX [IX_tblIDs_IDName]
ON [dbo].[tblIDs]
(
[IDName] ASC
)
WITH (
PAD_INDEX = OFF
, STATISTICS_NORECOMPUTE = OFF
, SORT_IN_TEMPDB = OFF
, DROP_EXISTING = OFF
, ONLINE = OFF
, ALLOW_ROW_LOCKS = ON
, ALLOW_PAGE_LOCKS = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 SQL 服务器中恢复 .BAK,但出现以下错误:
消息 3241,级别 16,状态 7,第 1 行 设备“c:\glyn\JA.bak”上的媒体系列格式不正确。SQL Server 无法处理此媒体系列。消息 3013,级别 16,状态 1,第 1 行 RESTORE DATABASE 异常终止。
我尝试使用 2012、2008 甚至 2005 进行恢复,但没有任何效果,我使用了以下查询,Tasks >> Back up但没有任何效果,这是我的 SQL:
RESTORE DATABASE JA FROM DISK='c:\glyn\JA.bak'
Run Code Online (Sandbox Code Playgroud)
有没有人有什么建议?我已经读到 bak 可能已损坏,它是由另一位从事该项目的 DVD 开发人员发送给我的。
在 MS SQL Server 2012 中运行以下查询时,第二个查询失败,但第一个查询失败。此外,在没有 where 子句的情况下运行时,两个查询都将失败。我不知道为什么两者都会失败,因为两者都应该有空的结果集。任何帮助/见解表示赞赏。
create table #temp
(id int primary key)
create table #temp2
(id int)
select 1/0
from #temp
where id = 1
select 1/0
from #temp2
where id = 1
Run Code Online (Sandbox Code Playgroud) 我有一个我无法理解的情况。我的 SQL Server 执行计划告诉我,我缺少表上的统计信息,但统计信息已经创建:

但是如果我们查看表格,我们会看到有一个自动创建的统计信息:

有人可以帮助理解它是怎么回事吗?
Auto_Update 和 Auto_Create 统计信息在当前数据库上打开。
我正在使用 SQL Server 2014。
我将数据库的备份从 SQL Server 2008 R2 恢复到 SQL Server 2012。
当我尝试访问应用程序的特定页面时,出现此错误:
无法作为数据库主体执行,因为主体“dbo”不存在
它与我的 2008 R2 项目完美配合。我该如何解决这个问题?
由于varchar无论如何动态分配空间,我的问题是varchar(255)与使用varchar(5000). 如果是,为什么?
通常,当我在新环境中开始时,我倾向于检查备份在哪里,最后一次完整的时间,最后一次应用的还原时间,我也会检查安全性。
我这样做的方式是通过 T-SQL。
检查备份
;with Radhe as (
SELECT @@Servername as [Server_Name],
B.name as Database_Name,
ISNULL(STR(ABS(DATEDIFF(day, GetDate(), MAX(Backup_finish_date)))), 'NEVER') as DaysSinceLastBackup,
ISNULL(Convert(char(11), MAX(backup_finish_date), 113)+ ' ' + CONVERT(VARCHAR(8),MAX(backup_finish_date),108), 'NEVER') as LastBackupDate
,BackupSize_GB=CAST(COALESCE(MAX(A.BACKUP_SIZE),0)/1024.00/1024.00/1024.00 AS NUMERIC(18,2))
,BackupSize_MB=CAST(COALESCE(MAX(A.BACKUP_SIZE),0)/1024.00/1024.00 AS NUMERIC(18,2))
,media_set_id = MAX(A.media_set_id)
,[AVG Backup Duration]= AVG(CAST(DATEDIFF(s, A.backup_start_date, A.backup_finish_date) AS int))
,[Longest Backup Duration]= MAX(CAST(DATEDIFF(s, A.backup_start_date, A.backup_finish_date) AS int))
,A.type
FROM sys.databases B
LEFT OUTER JOIN msdb.dbo.backupset A
ON A.database_name = B.name
AND A.is_copy_only = 0
AND (A.type = 'D') --'D' full, 'L' …Run Code Online (Sandbox Code Playgroud) SQL Server 如何确定查询计划的缺失索引建议中键列的顺序?
sql-server ×10
backup ×2
restore ×2
deadlock ×1
index-tuning ×1
oracle ×1
performance ×1
security ×1
statistics ×1