Aracılığıyla paylaş


SQL Server 2012 veritabanı altyapısı özellikleri davranışı değişiklikleri

Bu konuda davranış değişiklikleri açıklar Veritabanı Altyapısı. Davranış değişiklikleri etkileyen özellikleri nasıl çalışır veya etkileşim SQL Server 2012olarak karşılaştırmak-e doğru önceki sürümlerinde SQL Server.

Meta veri bulma

Gelişmeler Veritabanı Altyapısıile başlayan SQL Server 2012izin SQLDescribeColdaha doğru açıklamaları tarafından döndürülen olanlardan beklenen sonuçları elde etmek için SQLDescribeColönceki sürümlerinde SQL Server. Daha fazla bilgi için, bkz. Meta veri bulma.

set fmtonly aslında sorgu ile değiştirilir çalıştırmadan yanıt biçimi belirlemek için seçenek sp_describe_first_result_set (Transact-sql), sp_describe_undeclared_parameters (Transact-sql), sys.dm_exec_describe_first_result_set (Transact-sql), ve sys.dm_exec_describe_first_result_set_for_object (Transact-sql).

SQL Server Aracısı görevi komut dosyası içinde davranışındaki değişiklikler

De SQL Server 2012, varolan iş kodu kopyalayarak yeni bir iş oluşturmak, yeni iş yanlışlıkla varolan bir işi etkileyebilir. Varolan bir işi komut dosyası kullanarak yeni bir iş oluşturmak için el ile parametresi silmek @schedule\_uidolan genellikle mevcut işinde işin planını oluşturan bölümün son parametresi. Bu varolan işleri etkilemeden yeni iş yeni bir bağımsız tablosu oluşturacaktır.

Sabit için clr kullanıcı tanımlı işlevler ve yöntemlerin katlama

De SQL Server 2012, aşağıdaki kullanıcı tanımlı clr nesneleri şimdi katlanabilir:

  • Deterministik skalar değerli clr kullanıcı tanımlı işlevler.

  • Deterministik yöntemleri clr kullanıcı tanımlı türler.

Bu gelişme, bu işlevleri veya yöntemleri birden çok kez aynı bağımsız değişkenlerle çağrıldığında performansı geliştirmek istiyor. Deterministic olmayan işlevler veya yöntemler gibi hata deterministic işaretlenmiş ancak bu değişikliği beklenmeyen sonuçlara neden olabilir. Determinizm clr işlev veya yöntem değeri tarafından belirtilen IsDeterministicözelliği SqlFunctionAttributeya SqlMethodAttribute.

KullanırSTEnvelope yöntemi davranışını boş kayma türleriyle değişti

Davranış STEnvelopeyöntemi ile boş nesneler artık diğer davranışı ile tutarlı SQL Serverkayma yöntemleri.

De SQL Server 2008, STEnvelopeyöntemi döndürülen boş nesneler ile çağrıldığında aşağıdaki sonuçlar:

select geometry::Parse('POINT EMPTY').STEnvelope().ToString()
-- returns POINT EMPTY
select geometry::Parse('LINESTRING EMPTY').STEnvelope().ToString()
-- returns LINESTRING EMPTY
select geometry::Parse('POLYGON EMPTY').STEnvelope().ToString()
-- returns POLYGON EMPTY

select geometry::Parse('POINT EMPTY').STEnvelope().ToString()
-- returns POINT EMPTY
select geometry::Parse('LINESTRING EMPTY').STEnvelope().ToString()
-- returns LINESTRING EMPTY
select geometry::Parse('POLYGON EMPTY').STEnvelope().ToString()
-- returns POLYGON EMPTY

De SQL Server 2012, STEnvelopeyöntemi şimdi boş nesneler ile çağrıldığında aşağıdaki sonuçları verir:

select geometry::Parse('POINT EMPTY').STEnvelope().ToString()
-- returns GEOMETRYCOLLECTION EMPTY
select geometry::Parse('LINESTRING EMPTY').STEnvelope().ToString()
-- returns GEOMETRYCOLLECTION EMPTY
select geometry::Parse('POLYGON EMPTY').STEnvelope().ToString()
-- returns GEOMETRYCOLLECTION EMPTY

select geometry::Parse('POINT EMPTY').STEnvelope().ToString()
-- returns GEOMETRYCOLLECTION EMPTY
select geometry::Parse('LINESTRING EMPTY').STEnvelope().ToString()
-- returns GEOMETRYCOLLECTION EMPTY
select geometry::Parse('POLYGON EMPTY').STEnvelope().ToString()
-- returns GEOMETRYCOLLECTION EMPTY

Bir kayma nesnesi boş olup olmadığını belirlemek için arama STIsEmpty (geometri veri türü)yöntemi.

Yeni bir isteğe bağlı parametre log işlevi vardır

LOGİşlevi artık isteğe sahip baseparametresi. Daha fazla bilgi için, bkz. LOG (Transact-sql).

İstatistik hesaplaması Bölümlenmiş dizin işlemleri sırasında değişti

De SQL Server 2012, istatistik, tablodaki tüm satırlar bölümlenmiş bir dizin oluşturulduğunda veya yeniden tarayarak değil oluşturulur. Bunun yerine sorgu iyileştirici, istatistikleri üretmek için varsayılan örnekleme algoritmasını kullanır. Bölümlenmiş dizinler ile bir veritabanını yükselttikten sonra bu dizinler için histogram verileri bir fark fark edebilirsiniz. Bu davranış değişikliği sorgu performansını etkilemez. Tablodaki tüm satırları tarayarak bölümlenmiş dizinler hakkında istatistik elde etmek için, CREATE STATISTICS veya UPDATE STATISTICS deyimini FULLSCAN yan tümcesiyle kullanın.

Veri türü dönüştürme xml değeri yöntemi değişti

İç davranışını valueyöntemi xmlveri türü değişti. Bu yöntem bir XQuery karşı xml gerçekleştirir ve belirtilen bir skalar değer döndüren SQL Serververi türü. Xs dönüştürüleceğini türünde SQL Serververi türü. Daha önce valueyöntemi dahili bir XS kaynak değeri dönüştürülür, sonra XS dönüştürülmüş SQL Serververi türü. De SQL Server 2012, xs dönüştürme aşağıdaki durumlarda atlanır:

Kaynak xs veri türü

Hedef SQL Server veri türü

bayt

kısa

int

tamsayı

uzun

unsignedByte

unsignedShort

unsignedInt

unsignedLong

PozitifTamsayı

nonPositiveInteger

negativeInteger

nonNegativeInteger

tinyint

smallint

int

bigint

decimal

numeric

decimal

decimal

numeric

float

real

çift kişilik

float

Yeni davranış ara dönüşüm atlanabilir performansını artırır. Ancak, veri türü dönüştürmeleri başarısız olduğunda, ara xs: String değeri dönüştürürken büyütüldüğü daha farklı hata iletileri Bkz. Örneğin value yöntemini dönüştürme başarısız oldu, int100000 için değer bir smallint, önceki hata iletisi olarak:

The conversion of the nvarchar value '100000' overflowed an INT2 column. Use a larger integer column.

De SQL Server 2012, xs ara dönüştürme, hata iletisi şudur:

Arithmetic overflow error converting expression to data type smallint.

Sqlcmd.exe davranış değişikliği xml modu

Orada eğer sen kullanma sqlcmd.exe xml moduyla davranış değişiklikleri (: xml on komutunu) seçme yürütürken * t için XML …. Daha fazla bilgi için, bkz. Yönetilebilirlik geliştirmeleri (veritabanı altyapısı).

dbcc CHECKIDENT ileti yeniden düzenlendi.

De SQL Server 2012dbcc CHECKIDENT komutu tarafından döndürülen ileti yalnızca bu ARAŞTIRMA ile kullanıldığında değişti new_reseed_value geçerli kimlik değerini değiştirmek için. Yeni mesaj "kimlik bilgilerini kontrol: geçerli kimlik değerini '<geçerli kimlik değerini>'. dbcc yürütme tamamlandı. dbcc hata iletileri yazdırılır, sistem yöneticinize başvurun."

Önceki sürümlerde, mesajdır "kimlik bilgilerini kontrol: geçerli kimlik değerini '<geçerli kimlik değerini>', geçerli sütun değeri '<geçerli sütun değeri>'. dbcc yürütme tamamlandı. dbcc hata iletileri yazdırılır, sistem yöneticinize başvurun." dbcc CHECKIDENT noreseed ile ikinci bir parametre olmadan, ya da bir araştırma değeri olmadan belirtildiğinde iletiyi değişmemiş. Daha fazla bilgi için, bkz. DBCC CHECKIDENT (Transact-SQL).

xml veri türü exist() işlevinin davranışını değişti

Davranış exist() işlevi bir xml veri türü null değeri 0 (sıfır) ile karşılaştırırken değişti. Aşağıdaki örneği düşünün:

DECLARE @test XML;
SET @test = null;
SELECT COUNT(1) WHERE @test.exist('/dogs') = 0;
DECLARE @test XML;
SET @test = null;
SELECT COUNT(1) WHERE @test.exist('/dogs') = 0;

Önceki sürümlerde, bu karşılaştırma dönüş 1 (doğru); Şimdi, bu karşılaştırma, 0 (sıfır, false) döndürür.

Aşağıdaki karşılaştırma değişmemiştir:

DECLARE @test XML;
SET @test = null;
SELECT COUNT(1) WHERE @test.exist('/dogs') = 1; -- 0 expected, 0 returned
SELECT COUNT(1) WHERE @test.exist('/dogs') IS NULL; -- 1 expected, 1 returned
DECLARE @test XML;
SET @test = null;
SELECT COUNT(1) WHERE @test.exist('/dogs') = 1; -- 0 expected, 0 returned
SELECT COUNT(1) WHERE @test.exist('/dogs') IS NULL; -- 1 expected, 1 returned

Ayrıca bkz.

Başvuru

En son değişiklikleri SQL Server 2012 veritabanı altyapısı özellikleri

SQL Server 2012 kaldırılmış veritabanı altyapısı özellikleri

SQL Server 2012'deki Discontinued Database Engine işlevsellik

alter database uyumluluk düzeyi (Transact-sql)