Toplu işleri açıklama

Tamamlandı

T-SQL toplu işlemleri, bir istemci tarafından tek bir birim olarak SQL Server'a gönderilen bir veya daha fazla T-SQL deyimi koleksiyonundan oluşur. SQL Server, bir toplu işlemi ayrıştırırken, optimize ederken ve yürütürken tüm deyimlerde aynı anda çalışır.

Genellikle yordamları değil deyimleri kullanarak SELECT sorgu yazan bir rapor yazarıysanız, toplu işlem sınırlarını anlamak yine de önemlidir. Bu sınırlar, saklı yordamlar ve diğer yordamlarla çalışırken değişkenler ve parametreler üzerinde çalışmanızı etkiler. Örneğin, bir değişken, referans verildiği aynı kod bloğunda bildirilmelidir. Bu nedenle, bir toplu işte nelerin içerdiğini tanımak önemlidir.

Toplu işlemler istemci uygulaması tarafından sınırlandırılır. Toplu iş sonunu nasıl işaretlediğiniz istemcinizin ayarlarına bağlıdır. SQL Server Management Studio (SSMS) ve SQLCMD gibi Microsoft istemcileri için anahtar sözcüğüdür GO.

Bu örnekte, GO deyimiyle sonlandırılan iki ayrı işlem grubunun her biri vardır:

CREATE NEW <view_name>
AS ...
GO
CREATE PROCEDURE <procedure_name>
AS ...
GO

Toplu iş sonlandırıcı GO bir T-SQL anahtar sözcüğü değildir, ancak toplu iş sonunu belirtmek için SSMS tarafından tanınan bir anahtar sözcüktür.

T-SQL toplu işlemleriyle çalışırken dikkat edilmesi gereken iki önemli nokta göz önünde bulundurun:

  • Toplu işlemler, değişken kapsamı için sınırlardır; başka bir deyişle, bir toplu işlemde tanımlanan değişkene yalnızca aynı toplu iş içindeki diğer kodlar tarafından başvurulabilir
  • Genellikle, CREATE VIEW, CREATE FUNCTION ve CREATE PROCEDURE gibi veri tanımı deyimleri, aynı toplu işteki diğerleriyle birleştirilemiyor.

Toplu işlemlerle çalışma

Toplu iş, ayrıştırma ve yürütme için SQL Server'a gönderilen T-SQL ifadelerinin bir koleksiyonudur. Toplu işlemlerin nasıl ayrıştırılmış olduğunu anlamak, hata iletilerini ve davranışını belirlemede yararlıdır. SSMS'de Yürüt düğmesine bastığınızda olduğu gibi bir istemci tarafından toplu iş gönderildiğinde, toplu iş SQL Server altyapısı tarafından söz dizimi hataları için ayrıştırılır. Bulunan hatalar toplu işlemin tamamının reddedilmesine neden olur; toplu işlem içinde deyimlerin kısmi yürütülmesi yoktur.

Toplu işlem söz dizimi denetimini geçerse, SQL Server nesne adlarını çözümleme, izinleri denetleme ve kodu yürütme için iyileştirme gibi diğer adımları çalıştırır. Bu işlem tamamlanıp yürütme başladıktan sonra ifadeler tek tek ya başarılı olur ya da başarısız olur. Bu, söz dizimi denetiminin önemli bir karşıtlığıdır. Bir satırda çalışma zamanı hatası oluştuğunda, koda hata işleme eklemediğiniz sürece sonraki satır yine yürütülebilir.

Örneğin, aşağıdaki toplu işlem bir söz dizimi hatası içerir:

INSERT INTO dbo.t1 VALUE(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO

Şu hata iletisini verir:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'VALUE'.

Hata 1. satırda oluştu, ancak toplu işlemin tamamı reddedildi ve yürütme 2. satırla devam etmiyor. Deyimlerin her biri INSERT ters çevrilmiş olsa ve söz dizimi hatası ikinci satırda oluşsa bile, toplu işlemin tamamı reddedileceğinden ön satır yürütülmezdi.

Buna karşılık, bu düzeltilen toplu işlem bir hata içermiyor:

INSERT INTO dbo.t1 VALUES(1,2,N'abc');
INSERT INTO dbo.t1 VALUES(2,3,N'def');
GO

Önceki örneklerde INSERT deyimleri kullanılır, çünkü değişiklik deyimleri daha yaygın olarak topluca SELECT gruplandırılır.