我只是注意到很少有表具有不再指向任何主键的孤立记录(外键)。如何查询表以获取所有此类行的列表?当这些父记录被删除或如何处理?
我正在使用 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 中的生产备份文件中恢复该数据库以获取新数据。与生产的存储过程相比,我们经常编辑\更改或更新测试数据库中的存储过程来测试数据!
是否只刷新\恢复表而不是存储过程?所以我不必将它们重新编辑回我需要的更改?
这两个数据库(生产和测试)都在一台服务器上。
我的数据库大小约为 5 GB,我们负担不起第三方工具。
我在 SQL-Server 代理作业中有一个 SQL Server 2005 作业,我需要将其移动/转移到另一个更新的 SQL Server 2008 R2 实例。我能够编写脚本,然后将其用作升级后的开发人员中的新查询窗口。服务器,似乎(据我所知)我必须对此脚本进行的唯一更改是将其指向正确的服务器、文件路径并为其获取新的 @schedule_uid 编号,但不确定如何分配该编号.
感谢您的任何建议
脚本代码为:
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 2005 迁移到 SQL Server 2008R2,我看到 SQL Server 代理作业中有一项作业需要迁移,但我也在 SSIS 中看到它---> Stored Packages\MSDB\File Manipulation . 不确定我是否右键单击它并选择导出,如果它不能在新的开发服务器中工作,这会影响生产服务器吗?或者我如何将它的一个副本导入到另一个新的开发 SQL Server 2008?
感谢您的任何建议或方向。
我在 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
大约一年前,我将一个数据库从备份移动并恢复到另一个 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)
非常感谢任何建议。
我们计划合并 2 或 3 个使用几乎相同版本的 SQL Server 2008 R2 的区域数据库,为我们的最终用户报告提供精确的表和大多数存储过程......在此过程中,我们试图摆脱所有未使用的可能出于测试目的而创建的对象,以限制我们在生产数据库中看到的内容。所以有 5 或 7 个表是以前的 DBA 创建但不再使用(至少前端应用程序不再使用它),我如何确保没有其他依赖于这些表、触发器或SP?
在我尝试删除备份以外的备份之前,是否有可供我使用的清单,例如上次使用的时间,由谁使用等......?
禁用约束后,我删除了 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 ×7
ssis ×2
alter-table ×1
backup ×1
ddl ×1
foreign-key ×1
identity ×1
metadata ×1
restore ×1
testing ×1