SQL Server 2005, bağlantılı bir sunucu üzerinde bir tablosunu güncelleştirir ve sonra yerel sunucuda bir tabloya tabloyu birleştiren bir sorgu çalıştırdığınızda performansı yavaşlıyor
Bağlantılı bir sunucu üzerinde bir tablosunu güncelleştirir ve sonra yerel sunucuda bir tabloya tabloyu birleştiren bir sorgu var.
Microsoft SQL Server 2005, yerel sunucu çalışıyor.
Yerel sunucu üzerinde SQL Server 2005'te sorguyu çalıştırın.
Bu senaryoda, performansı aynı sorguda bir Microsoft SQL Server 2000 ile karşılaştırıldığında, performansı yavaş gelir. Örneğin, SQL Server 2000'de Sorguyu çalıştırdığınızda, sorgu 1 bitmesini saniyeden alır. Ancak, SQL Server 2005'te Sorguyu çalıştırdığınızda, sorgu tamamlanması yaklaşık 24 saniye sürer.
Sorgu, bağlantılı bir sunucu üzerinde bir tabloyu uzaktan tarama işlemi gerçekleştirir. SQL Server 2005'te Sorguyu çalıştırdığınızda, uzaktan tarama işlemi tablosundaki tüm satırları alır. Tablo çok fazla satır içeriyorsa, uzaktan tarama işlemi tamamlamak için uzun sürüyor.
Ancak, SQL Server 2000'de Sorguyu çalıştırdığınızda, uzaktan Query işlemi bağlantılı bir sunucu üzerinde çalıştırmak için bir sorgu gönderir. Bu nedenle, çok sayıda tablo içeriyor olsa bile, kısa bir süre uzaktan tarama işlemi tamamlanır.
Bu soruna geçici bir çözüm bulmak için <a0></a0>, yerel sunucuda tablosundaki bir UNIQUE sınırlamasıyla veya bir PRIMARY KEY kısıtlaması ekleyin. Kısıtlamayı KATıLMA işlemi için kullandığınız bir sütun ekleyin.
Örneğin, aşağıdaki adım 4 "daha fazla bilgi" bölümünde açıklanan DECLARE bildirimi güncelleştirmeniz:
Not Aşağıdaki adımlar, SQL Server 2005 çalıştıran iki sunucu olduğunu varsayalım. Bir örnek ServerA\SQL2005 adıdır. Diğer örnek ServerB\SQL2005 addır.
SQL Server 2005'in ServerA örneğinde, SQL Server Management Studio'da bir veritabanı oluşturmak için aşağıdaki kodu çalıştırın:
USE MASTER
GO
IF EXISTS (SELECT * FROM sysdatabases where name = 'LinktestTarget')
DROP DATABASE LinktestTarget
GO
CREATE DATABASE LinktestTarget
GO
ALTER DATABASE LinktestTarget MODIFY FILE
(NAME = 'LinktestTarget', SIZE = 200MB)
GO
ALTER DATABASE LinktestTarget MODIFY FILE
(NAME = 'LinktestTarget_log', SIZE = 100MB)
GO
SQL Server 2005'in <a1>SunucuB</a1> örneğinde Management Studio'da bağlantılı bir sunucu oluşturmak için aşağıdaki kodu çalıştırın: @ sunucuadı
SQL Server 2005'in ServerA örneğinde, bir tablo oluşturmak için aşağıdaki deyimi çalıştırın ve sonra da 50.000 satır veri içeren tabloyu doldurmak:
USE LinktestTarget
GO
CREATE TABLE [T1] (
[c1] [int] NOT NULL,
[c2] [int] NOT NULL,
[c3] char (4000) NOT NULL,
CONSTRAINT [PK_t1] PRIMARY KEY CLUSTERED ([c1])
WITH FILLFACTOR = 80 ON [PRIMARY]
) ON [PRIMARY]
GO
SET NOCOUNT ON
GO
DECLARE @counter int
SET @counter = 1
WHILE @counter < 50000
BEGIN
INSERT INTO T1 (c1, c2, c3) VALUES (@counter, @counter,'')
SET @counter = @counter + 1
END
GO
UPDATE STATISTICS T1 (PK_t1) WITH FULLSCAN
SQL Server 2005'in <a1>SunucuB</a1> örneğinde, aşağıdaki ifadeyi çalıştırın. Performansı yavaş olduğuna dikkat edin.
DECLARE @t2 table (c1 int, c2 int)
INSERT INTO @t2 (c1, c2) VALUES (399990, 399990)
UPDATE A
SET A.c2 = B.c2
FROM LS.LinktestTarget.dbo.T1 AS A
JOIN @t2 as B on B.c1 = A.c1
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.