আমি আপনাকে একটি উদাহরণ দিয়ে যাব যাতে আপনি দেখতে পাচ্ছেন যে এটি কেন দীর্ঘ সময় নিচ্ছে। এই পরীক্ষার জন্য একটি খালি ডাটাবেস তৈরি করা হচ্ছে।
CREATE DATABASE [TestFK]
GO
2 টেবিল তৈরি করা হচ্ছে।
USE [TestFK]
GO
CREATE TABLE dbo.[Address] (
ADDRESSID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Address1 VARCHAR(50),
City VARCHAR(50),
[State] VARCHAR(10),
ZIP VARCHAR(10));
GO
CREATE TABLE dbo.Person (
PersonID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50),
AddressID INT);
GO
ব্যক্তির টেবিলে একটি বিদেশী কী সীমাবদ্ধতা তৈরি করা।
USE [TestFK]
GO
ALTER TABLE dbo.Person ADD CONSTRAINT FK_Person_AddressID FOREIGN KEY (AddressID)
REFERENCES dbo.Address(AddressID)
GO
উভয় টেবিলের মধ্যে কিছু তথ্য .োকান।
USE [TestFK]
GO
INSERT dbo.Address (Address1,City,[State],Zip)
SELECT '123 Easy St','Austin','TX','78701'
UNION
SELECT '456 Lakeview','Sunrise Beach','TX','78643'
GO
INSERT dbo.Person (LastName,FirstName,AddressID)
SELECT 'Smith','John',1
UNION
SELECT 'Smith','Mary',1
UNION
SELECT 'Jones','Max',2
GO
একটি নতুন ক্যোয়ারী উইন্ডো খুলুন এবং এটি চালান (কোয়েরি শেষ হয়ে গেলে উইন্ডোটি বন্ধ করবেন না)।
USE [TestFK]
GO
BEGIN TRAN
INSERT dbo.Person (LastName,FirstName,AddressID)
SELECT 'Smith1','John1',1
UNION
SELECT 'Smith1','Mary1',1
UNION
SELECT 'Jones1','Max1',2
অন্য কোয়েরি উইন্ডোটি খুলুন এবং এটি চালান।
USE [TestFK]
GO
ALTER TABLE dbo.person DROP CONSTRAINT FK_Person_AddressID
আপনি দেখতে পাবেন যে আপনি ড্রপ সীমাবদ্ধতা চালিয়ে যাবেন (অপেক্ষা করছেন) এবং এখন এটি কেন দীর্ঘায়িত হচ্ছে এবং কী লকগুলির জন্য এটি অপেক্ষা করছে তা দেখার জন্য এখন ক্যোয়ারি চালান।
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
একবার আপনি নিজের সন্নিবেশ অপারেশন করলে, ড্রপ সীমাবদ্ধতা অবিলম্বে সম্পূর্ণ হবে কারণ এখন ড্রপ স্টেটমেন্ট প্রয়োজনীয় লকটি অর্জন করতে পারে acquire
আপনার ক্ষেত্রে আপনার নিশ্চিত করতে হবে যে কোনও সেশনে একটি সামঞ্জস্যপূর্ণ লক নেই যা প্রয়োজনীয় লক / লকগুলি অর্জনের জন্য ড্রপ সীমাবদ্ধতা রোধ করবে।