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