是否可以通过在引用它的所有外键之间级联更新来更新主键列值?
# EDIT 1: 当我运行 followinq 查询
select * from sys.foreign_keys where referenced_object_id=OBJECT_ID('myTable')
Run Code Online (Sandbox Code Playgroud)
,我看到 update_referential_action 设置为 0。因此更新我的主键列后没有采取任何操作。如何更新外键以使其ON CASCADE UPDATE?
# EDIT 2:
为了编写或删除架构中所有外键的脚本,请运行以下脚本(取自此处)
DECLARE @schema_name sysname;
DECLARE @table_name sysname;
DECLARE @constraint_name sysname;
DECLARE @constraint_object_id int;
DECLARE @referenced_object_name sysname;
DECLARE @is_disabled bit;
DECLARE @is_not_for_replication bit;
DECLARE @is_not_trusted bit;
DECLARE @delete_referential_action tinyint;
DECLARE @update_referential_action tinyint;
DECLARE @tsql nvarchar(4000);
DECLARE @tsql2 nvarchar(4000);
DECLARE @fkCol sysname;
DECLARE @pkCol sysname;
DECLARE @col1 bit;
DECLARE @action char(6);
DECLARE @referenced_schema_name sysname;
DECLARE FKcursor …Run Code Online (Sandbox Code Playgroud) sql-server-2008 foreign-key sql-server referential-integrity update
我们正在使用新服务器和更新版本的 Microsoft SQL Server 升级我们的测试环境,但遇到了问题。
在新服务器上,我们的旧代码在执行某些存储过程时会出现“对象关闭时不允许操作”。此消息从未出现在旧服务器上。当我们追踪到它时,可以通过添加SET NOCOUNT ON;到存储过程来解决问题。
我查看了数据库上的默认值,没有看到与默认值相关的不同设置(SQL Server 2008 与 SQL Server 2014)。
我应该查看什么设置来全局解决此问题,而无需添加SET NOCOUNT ON到一千个存储过程?
我们即将在不同的国家设置 SQL Server。我们需要链接它们,但我们不必有直接链接(如在链接服务器中)。换句话说,它们可以松散耦合。
是通过 VPN 连接它们并将它们作为链接服务器,还是通过 Web 服务使用松散耦合更好?
“更好”,我指的是稳定性。
我正在尝试为 SQL Server 2008 数据库创建一些索引,但收到以下错误消息。
消息 8606,级别 17,状态 1,第 1 行 此索引操作每个 DOP 需要 1024 KB 内存。DOP 为 2 的 2048 KB 总需求大于为高级服务器配置选项“索引创建内存 (KB)”设置的 sp_configure 值 704 KB。增加此设置或减少 DOP 并重新运行查询。
目前,索引创建内存设置为 794KB,每个查询的最小内存设置为 1024KB。更改这些值会产生什么影响?尤其是在性能方面。我应该更改它们,创建索引并将它们更改回来还是应该将其设置为 0?
我真的很少使用触发器。所以我第一次遇到了一个问题。我有很多带有触发器的表(每个表有 2 个或更多)。我想知道并更改每个表的触发顺序。是否有可能获得这些信息?
添加:
这是我发现的关于 mssqltips 的一篇很好的文章。
最近,我不再只是在文件利用率接近 80% 时增加文件,而是更主动地通过常用技巧回收空间,例如对堆进行碎片整理、添加和删除聚集索引、实现行或页面压缩等。
但是,在某些情况下,我可以通过执行DBCC CLEANTABLE回收更多空间。我的环境中有数百个数据库,不可能知道用户在每个数据库中做了什么,并且完全可以接受涉及删除固定长度列的更改。我通常通过查看我编写的一些对象空间利用脚本中的行数与页数来发现这些机会。我想通过尝试自动检测这些场景来更进一步。
我想知道的是,是否有人在积极监控此类机会,如果是,您具体在寻找什么?
我的想法是写一些东西,收集一行的最大和最小大小、表中的行数、分配的页数和使用的页数,然后做一些基本的数学运算来记录结果远远超出了“预期”。
在同一台物理机上跨另一个数据库执行选择时是否会影响性能?所以我在同一个 SQL 2008 实例中运行的同一台物理机器上有 2 个数据库。
例如在 SomStoreProc on_this_db 我运行 SELECT someFields FROM the_other_db.dbo.someTable
到目前为止,我在互联网上读到的内容,大多数人似乎都表示不。
我有一个这样的请求
SELECT
[EstimateId],
[CreationUserId],
[EstimateStatusValueId],
[LanguageId],
[LocationId],
[EstimatorUserId],
[FilterUnitSystemTypeId],
[EstimateNumber],
[RevisionNumber],
[CreationDate],
[ModificationDate],
[ProjectDescription],
[IsBsdq],
[ClosingDate],
[ClosingTime],
[ClosingUpdatedOn],
[DeadLineDate],
[IsReceived],
[Inclusion],
[Exclusion],
[Misc],
[Note],
[WorkDeadLines],
[Comments],
[Validity],
[PlansLocation],
[PlansReceivedFrom],
[Price]
FROM [Estimate].[Estimates]
ORDER BY [ClosingDate] ASC, [ClosingTime] ASC
Run Code Online (Sandbox Code Playgroud)
当我在 SSMS 中运行此查询时,执行时间为 953 毫秒,但是当我从 C# 中的 Linq 查询运行此查询时,执行时间为 1813 毫秒。
Linq 查询使用“.Net SqlClient 数据提供程序”并针对 EntityFramework(EDMX 文件)发出。这可能是一个问题吗?
有谁知道为什么我在那些相同但从不同上下文针对同一数据库执行的请求的执行时间之间有很大差异?
我验证了两个请求的所有执行计划,它们使用相同的索引来满足各自的查询。
要查看 C# 请求的执行计划,我使用 SQL 分析器捕获 Show Plan XML 事件,并将其与 SSMS 之一进行比较,两者相同。
我负责在一个项目上创建一个数据库。我们有很少有值的字段(每 10,000 条记录中有 1 个),我正在尝试找出将其存储在数据库中的最佳方法。
据我所知,我有 3 个选择:
还有其他我没有考虑过的选择吗?
我正在尝试找出每种方法的优缺点。据我所知,1 将是最简单的,而 2 将占用最少的空间,但我正在努力为 3 找到许多资源。
在 Microsoft SQL 服务器中,如何使用 T-SQL 添加/更改现有表列的默认值?
sql-server-2008 ×10
sql-server ×5
ddl ×1
foreign-key ×1
network ×1
performance ×1
sp-configure ×1
trigger ×1
update ×1
xml ×1