小编Nic*_*ias的帖子

生成的脚本中的SQL Server Check/NoCheck差异

我正在尝试将模式同步到不同的数据库.基本上,我在两个数据库上运行任务 - >使用SQL Server Management Studio生成脚本(2005),并将输出与diff工具进行比较.

出于某种原因,一个脚本添加了约束WITH CHECK和一个WITH NO CHECK,然后重新启用了两个约束.

我得到的第一个数据库:

ALTER TABLE [dbo].[Profile]  WITH CHECK ADD  CONSTRAINT [FK_Profile_OrganizationID] FOREIGN KEY([OrganizationID])
REFERENCES [dbo].[Organization] ([OrganizationID])
GO
ALTER TABLE [dbo].[Profile] CHECK CONSTRAINT [FK_Profile_OrganizationID]
GO
Run Code Online (Sandbox Code Playgroud)

第二个数据库生成为

ALTER TABLE [dbo].[Profile]  WITH NOCHECK ADD  CONSTRAINT [FK_Profile_OrganizationID] FOREIGN KEY([OrganizationID])
REFERENCES [dbo].[Organization] ([OrganizationID])
GO
ALTER TABLE [dbo].[Profile] CHECK CONSTRAINT [FK_Profile_OrganizationID]
GO
Run Code Online (Sandbox Code Playgroud)

所以我有两个问题:

  1. 最终结果是一样的吗?(编辑: 似乎很多人只关注这两个脚本的第一个语句.我对这两个脚本的最终结果感兴趣.)

  2. 如果最终结果相同,为什么Management Studio会针对不同的数据库生成不同的结果?

sql-server sql-server-2005

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

如何在同一台服务器上备份和还原数据库作为副本?

我有一个SQL2005 Express数据库,我想在同一个实例上创建一个副本.你如何用脚本来做这件事?

我已经有一个用于生成备份的脚本,但恢复失败了......

错误:

消息3234,级别16,状态2,行2逻辑文件"MyDB_data"不是数据库"MyDB_Test"的一部分.使用RESTORE FILELISTONLY列出逻辑文件名.
消息3013,级别16,状态1,行2 RESTORE DATABASE异常终止.

决议:

RESTORE DATABASE [MyDB_Test]
FROM DISK = 'C:\temp\SQL\MyDB.bak'
WITH
MOVE 'MyDB' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test.mdf'
, MOVE 'MyDB_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test_log.ldf'
, REPLACE;
Run Code Online (Sandbox Code Playgroud)

原因:
我在第一次尝试时没有正确识别逻辑路径.

sql sql-server restore sql-server-express

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

删除SQL Server 2005记录而不记录日志

如何从SQL Server 2005表中删除记录而不将其记录到事务日志中.

我不想记录,因为一旦删除,将永远不再需要这些记录.

目前各种删除需要花费太多时间.是否有其他选项可以提高删除语句的性能?我不能使用truncate,因为需要where子句.

sql-server sql-server-2005

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

使SQL Server更快地处理数据 - 关闭事务日志记录?

我使用SQL Server 2005作为数据存储,用于我分析工作的大量数据.这不是一个事务性数据库,因为我没有使用更新或捕获实时数据.我从客户端获取了一些数据,将它们加载到SQL Server中并进行一系列操作.然后我抓住这些数据并将它们拉入R,我将进行大部分分析.然后我将一些数据推送到SQL Server中的表中,也许可以进行一两次连接.

我有一段时间,SQL Server中的日志变得越来越大,我认为创建它们需要一定程度的开销.如何配置SQL Server以便它在很少或没有日志记录的情况下运行?如果事情变得腐败,我很高兴从一开始就开始.任何想法如何使这一切更快?

顺便说一句,没有必要告诉我如何缩小日志,我已经这样做了.但我希望我不必首先制作原木.我只使用数据库来存放数据,因为它太大而无法容纳R中的内存.

我应该使用比Sql Server更简单的数据库吗?随意告诉我,我正用大锤杀死一只蚂蚁.但请推荐一个更合适尺寸的锤子.:)

sql-server sql-server-2005

14
推荐指数
3
解决办法
6万
查看次数

从t-sql中了解sql server服务运行了多长时间

我想如果它可以从sql server里面运行多久sql server一直在运行.

想与未使用的索引中的一个DMV一起使用它,但是每次sql server加载时都会重置set,所以我想知道它们有多么有用.

sql-server sql-server-2005

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

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

sql 2008中没有索引的表的列表

如何在SQL 2008数据库中列出没有索引的表?

编辑
我想要Schema名称和Table名称.

t-sql sql-server sql-server-2008

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

获取上次成功上班的日期?

我有一个执行存储过程的步骤作业.我想获得上次成功执行作业的日期,以便我可以更新delta而不是整个数据集.

现在我的作业设置每天运行一次,所以我有一个默认参数,如果它为null我将它设置为GETDATE() - 1所以我还在更新delta但是我想要做的是设置上次成功执行作业的日期.

exec dbo.usp_UpdateFrom @LastSuccessfulExecutionTime
Run Code Online (Sandbox Code Playgroud)

目前的程序是这样的

CREATE PROCEDURE dbo.usp_UpdateFrom
    @FromDate datetime = NULL --would like to pass last successful execution time of the job
AS
    IF @FromDate IS NULL
        SET @FromDate = GETDATE() - 1

    -- do stuff
END
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-agent

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

SQL Server无法在本地字符串变量中存储超过4000个字符

我尝试使用text或ntext作为变量的类型,但不允许使用它们.
有没有办法绕过这个?

sql sql-server sql-server-2000

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

在IF .. ELSE语句中使用临时表

为什么SQL Server坚持临时表已经存在!一个或另一个会发生!! ,所以情况永远不会如此.

declare @checkvar  varchar(10)
declare @tbl TABLE( colx varchar(10) )
set @checkvar ='a'

INSERT  INTO @tbl (colx) VALUES('a')
INSERT  INTO @tbl (colx) VALUES('b')
INSERT  INTO @tbl (colx) VALUES('c')
INSERT  INTO @tbl (colx) VALUES('d')

IF @checkvar  is null  select colx INTO #temp1 FROM @tbl
ELSE select colx INTO #temp1 FROM @tbl WHERE colx =@checkvar
Run Code Online (Sandbox Code Playgroud)

错误是:数据库中已存在名为"#temp1"的对象.

这周围有优雅的方式吗?如果@checkvar为null,我想要整个表,只给我@checkvar =的值

编辑:列是varchar,而不是int.

sql t-sql sql-server sql-server-2005

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