我有一个旧应用程序用作替代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 开发人员发送给我的。
我有一些使用 Entity Framework Code First 创建的数据库;应用程序正在运行,总的来说,我对 Code First 让我做的事情感到非常满意。我首先是一名程序员,其次是 DBA,这是必要的。我正在阅读 DataAttributes 以在 C# 中进一步描述我希望数据库执行的操作;我的问题是:将这些nvarchar(max)字符串放在我的桌子上会吃什么惩罚(见下面的例子)?
在这个特定的表中有几列;在 C# 中,它们是这样定义的:
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Name { get; set; }
public string Message { get; set; }
public string Source { get; set; }
public DateTime Generated { get; set; }
public DateTime Written { get; set; }
Run Code Online (Sandbox Code Playgroud)
我希望根据名称、来源、生成和书面内容进行查询和/或排序。我希望 Name 和 Source 的长度为 0-50 个字符,有时可达 150 个。我希望这个表开始时很小(<100k 行),但随着时间的推移显着增长(>1m 行)。显然消息可以是小或大的,并且可能不会被查询。
我想知道的是,我的 Name 和 Source …
sql-server entity-framework sql-server-2008-r2 azure-sql-database
在 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) 是否有任何内置函数/存储过程/查询有助于检索有关MyTableSQL Server 数据库中大小的信息?
我想从 SQL Server 数据库中的所有表中删除所有默认约束、检查约束、唯一约束、主键和外键。我知道如何从 中获取所有约束名称sys.objects,但是如何填充ALTER TABLE部件?
我有一个我无法理解的情况。我的 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 ×10
backup ×2
restore ×2
constraint ×1
ddl ×1
deadlock ×1
security ×1
statistics ×1
table ×1