小编Sha*_*mad的帖子

如何在单个查询中获取所有孤立记录?

我只是注意到很少有表具有不再指向任何主键的孤立记录(外键)。如何查询表以获取所有此类行的列表?当这些父记录被删除或如何处理?

我正在使用 SQL Server 2008 R2,我们试图在清理后将 3 个类似的数据库导入一个,请指教。

编写示例子表 (DocumentDistribution) 和父表 (DocumentSource) 的脚本:

ALTER TABLE [dbo].[DocumentDistribution] WITH NOCHECK ADD CONSTRAINT [fk_documentdistsourceid_documentsourceid] FOREIGN KEY([DocumentDistSourceID]) REFERENCES [dbo].[DocumentSource] ([DocumentSourceID]) 
GO
 ALTER TABLE [dbo].[DocumentDistribution] CHECK CONSTRAINT [fk_documentdistsourceid_documentsourceid] 
Run Code Online (Sandbox Code Playgroud)

这不是告诉我表之间存在关系并明确定义了外键约束吗?

sql-server-2008-r2

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

我可以恢复所有表而不是存储过程吗?

我有一个测试数据库,我定期从 SQL Server 2008 R2 中的生产备份文件中恢复该数据库以获取新数据。与生产的存储过程相比,我们经常编辑\更改或更新测试数据库中的存储过程来测试数据!

是否只刷新\恢复表而不是存储过程?所以我不必将它们重新编辑回我需要的更改?

这两个数据库(生产和测试)都在一台服务器上。

我的数据库大小约为 5 GB,我们负担不起第三方工具。

sql-server testing backup sql-server-2008-r2 restore

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

如何更改@schedule_uid=N'????'的数量 重新创建 SQL Server 代理作业?

我在 SQL-Server 代理作业中有一个 SQL Server 2005 作业,我需要将其移动/转移到另一个更新的 SQL Server 2008 R2 实例。我能够编写脚本,然后将其用作升级后的开发人员中的新查询窗口。服务器,似乎(据我所知)我必须对此脚本进行的唯一更改是将其指向正确的服务器、文件路径并为其获取新的 @schedule_uid 编号,但不确定如何分配该编号.

  • 此作业是为 SSIS 包构建的(作为它在文件路径中的指向)

感谢您的任何建议

脚本代码为:

USE [msdb]
GO

/****** Object:  Job [eLFCopy]    Script Date: 12/19/2013 11:30:57 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 12/19/2013 11:30:57 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server ssis sql-server-2008-r2

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

如何将 SQL 代理作业移动到另一台服务器?

我正在从 SQL Server 2005 迁移到 SQL Server 2008R2,我看到 SQL Server 代理作业中有一项作业需要迁移,但我也在 SSIS 中看到它---> Stored Packages\MSDB\File Manipulation . 不确定我是否右键单击它并选择导出,如果它不能在新的开发服务器中工作,这会影响生产服务器吗?或者我如何将它的一个副本导入到另一个新的开发 SQL Server 2008?

感谢您的任何建议或方向。

sql-server ssis sql-server-2008-r2 sql-server-agent

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

为什么从脚本中删除所有外键不起作用?

我在 SQL Server 2008 R2 机器上拥有系统管理员权限。我找到了一个脚本,它可以删除所有外键,并在测试导入后需要时为我们重新添加它们。因此,我执行以下代码时没有语法错误,因为它显示了“Alter Table [ParentTable] Drop Constraint FK_Name”...总共 23 个键,但是当我刷新服务器或数据库和表时,当我为每个表展开 Keys 节点时,我仍然看到它们吗?那么为什么不丢弃它们呢?另外,如果我想再次运行以进行测试,我是否需要将其转换为永久表或将脚本放入存储过程中?请指教。

我使用了“Pinal Dave”发布的“Swastik Mishra”中的以下脚本 http://blog.sqlauthority.com/2014/04/11/sql-server-drop-all-the-foreign-key-constraint-in- database-create-all-the-foreign-key-constraint-in-database/

    SET NOCOUNT ON
DECLARE @table TABLE(
RowId INT PRIMARY KEY IDENTITY(1, 1),
ForeignKeyConstraintName NVARCHAR(200),
ForeignKeyConstraintTableSchema NVARCHAR(200),
ForeignKeyConstraintTableName NVARCHAR(200),
ForeignKeyConstraintColumnName NVARCHAR(200),
PrimaryKeyConstraintName NVARCHAR(200),
PrimaryKeyConstraintTableSchema NVARCHAR(200),
PrimaryKeyConstraintTableName NVARCHAR(200),
PrimaryKeyConstraintColumnName NVARCHAR(200)
)
INSERT INTO @table(ForeignKeyConstraintName, ForeignKeyConstraintTableSchema,     ForeignKeyConstraintTableName, ForeignKeyConstraintColumnName)
SELECT
U.CONSTRAINT_NAME,
U.TABLE_SCHEMA,
U.TABLE_NAME,
U.COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE U
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
ON U.CONSTRAINT_NAME = C.CONSTRAINT_NAME
WHERE
C.CONSTRAINT_TYPE = 'FOREIGN KEY'
UPDATE @table SET
PrimaryKeyConstraintName …
Run Code Online (Sandbox Code Playgroud)

foreign-key sql-server metadata sql-server-2008-r2 alter-table

4
推荐指数
1
解决办法
4759
查看次数

如何解决 SQL 或孤立用户中 SID 不匹配的问题?

大约一年前,我将一个数据库从备份移动并恢复到另一个 SQL Server 2008R2。我不知道孤儿用户的概念。据我了解,我们最终会得到不匹配的 SID 吗?所以我运行下面的查询,我看到服务器和数据库的 sid 名称对于同一登录用户是不同的。到目前为止,用户没有抱怨,但我将如何解决这个问题?是否有任何存储过程为我列出它们?或者如果我保持原样,我可能会面临什么问题。

select d.name, d.sid, s.name, s.sid
from sys.database_principals d 
full join sys.server_principals s
on d.principal_id = s.principal_id
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议。

sql-server sql-server-2008-r2

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

如何识别未使用的表

我们计划合并 2 或 3 个使用几乎相同版本的 SQL Server 2008 R2 的区域数据库,为我们的最终用户报告提供精确的表和大多数存储过程......在此过程中,我们试图摆脱所有未使用的可能出于测试目的而创建的对象,以限制我们在生产数据库中看到的内容。所以有 5 或 7 个表是以前的 DBA 创建但不再使用(至少前端应用程序不再使用它),我如何确保没有其他依赖于这些表、触发器或SP?

在我尝试删除备份以外的备份之前,是否有可供我使用的清单,例如上次使用的时间,由谁使用等......?

sql-server sql-server-2008-r2

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

如何为所有标识列重新设定种子?

禁用约束后,我删除了 20 个表中的所有行,使用存储的 proc SP_MsForEachTable 触发。现在在导入之前,我需要重新设置所有标识列以从 1 开始自动编号。

所以我创建了一个存储过程,将表名作为参数传递,因为这似乎需要时间单独执行,是否有另一种方法可以一次对所有表执行此操作?

   CREATE PROCEDURE [dbo].[USP_ReseedID]
@table_name varchar(50)
AS
BEGIN
    DBCC CHECKIDENT ( @table_name, RESEED, 0)

END  
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server sql-server-2008-r2 identity ddl

0
推荐指数
1
解决办法
1474
查看次数