Gelişmiş tarih/saat türleri (ole db ve odbc) için toplu Kopyala değişiklikleri
Bu konuda toplu kopyalama işlevleri desteklemek için Tarih/saat geliştirmeleri açıklar. Bu konuda yer alan bilgiler geçerli ole db ve odbc SQL ServerNative Client.
Biçimi dosyaları
Biçimi dosyaları etkileşimli olarak oluştururken, Tarih ve saat türleri ve karşılık gelen ana bilgisayar dosyası veri türü adları belirtmek için kullanılan giriş aşağıdaki tabloda açıklanmaktadır.
Dosya depolama türü |
Ana bilgisayar dosyası veri türü |
Yanıt: "alan dosya depolama türünü girin <field_name><varsayılan>:" |
---|---|---|
DateTime |
SQLDATETIME |
d |
Smalldatetime |
SQLDATETIM4 |
D |
Tarihi |
SQLDATE |
de |
Time |
SQLTIME |
te |
Datetime2 |
SQLDATETIME2 |
D2 |
Datetimeoffset |
SQLDATETIMEOFFSET |
yapmak |
xml biçimi dosyası xsd aşağıdaki eklemeler olacaktır:
<xs:complexType name="SQLDATETIME2">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SQLDATETIMEOFFSET">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SQLDATE">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SQLTIME">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SQLDATETIME2">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SQLDATETIMEOFFSET">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SQLDATE">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SQLTIME">
<xs:complexContent>
<xs:extension base="bl:Fixed"/>
</xs:complexContent>
</xs:complexType>
Karakter veri dosyası
Karakter veri dosyalarında "veri biçimleri: dizeler ve harflerin" açıklandığı Tarih ve Saat değerlerini temsil edilir bölümünde odbc tarih/saat geliştirmeleri için veri türü desteğiODBC, ya da, ole db tarih/saat geliştirmeleri için veri türü desteğiole db için.
Yerel veri dosyaları içinde dört yeni türleri için Tarih ve saat değerleri ölçekli 7 onların tds tanıtımlarını gösterilir (çünkü bu tarafından desteklenen en çok SQL Serverve bcp veri dosyaları değil bu sütun ölçeği). Mevcut depolama birimine hiçbir değişiklik datetimeve smalldatetimetürü veya sekmeli veri akışı (tds) temsilcilikleri.
Depolama boyutları farklı depolama türleri için ole db için şunlardır:
Dosya depolama türü |
Depolama boyutu |
---|---|
datetime |
8 |
smalldatetime |
4 |
tarihi |
3 |
Saat |
6 |
datetime2 |
9 |
datetimeoffset |
11 |
Boyutları için odbc gibidir. BCP.exe her zaman hassas sunucudan alır çünkü o hassas biçimi veya veri dosyalarını saklamak için gerekli olmadığını unutmayın.
Dosya depolama türü |
Depolama boyutu |
Depolama biçimi |
---|---|---|
DateTime (d) |
8 |
TDS |
smalldatetime (d) |
4 |
TDS |
tarihi (de) |
3 |
TDS |
Saat (te) |
6 |
TDS |
datetime2 (d2) |
9 |
TDS |
datetimeoffset (do) |
11 |
TDS |
Sqlncli.h bcp türleri
Aşağıdaki odbc bcp API uzantıları ile kullanılacak sqlncli.h tanımlanır. Bu tip ile geçirilen eUserDataTypeparametresi IBCPSession::BCPColFmtole DB.
Dosya depolama türü |
Ana bilgisayar dosyası veri türü |
Kullanılmak üzere sqlncli.h yazınIBCPSession::BCPColFmt |
Değer |
---|---|---|---|
DateTime |
SQLDATETIME |
BCP_TYPE_SQLDATETIME |
0x3D |
Smalldatetime |
SQLDATETIM4 |
BCP_TYPE_SQLDATETIME4 |
0x3A = |
Tarihi |
SQLDATE |
BCP_TYPE_SQLDATE |
0x28 |
Time |
SQLTIME |
BCP_TYPE_SQLTIME |
0x29 |
Datetime2 |
SQLDATETIME2 |
BCP_TYPE_SQLDATETIME2 |
0x2A |
Datetimeoffset |
SQLDATETIMEOFFSET |
BCP_TYPE_SQLDATETIMEOFFSET |
0x2B |
bcp veri türü dönüştürmeleri
Aşağıdaki tablolarda dönüştürme bilgilerini sağlar.
ole db Not aşağıdaki dönüştürmeleri tarafından gerçekleştirilen IBCPSession. IRowsetFastLoadole db dönüşümleri için tanımlanan kullanır İstemciden sunucuya gerçekleştirilen dönüşümleri. DateTime değerleri 1 olarak yuvarlanır Not/300 saniye ve smalldatetime değerleri aşağıda açıklanan istemci dönüşümleri gerçekleştirdikten sonra sıfır saniye süresi vardır. DateTime yuvarlama, Saat ve dakika, ancak tarihi değil üzerinden yayar.
--> Kaynak |
tarihi |
Saat |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
char |
wchar |
---|---|---|---|---|---|---|---|---|
Tarihi |
1 |
- |
1,6 |
1,6 |
1,6 |
1,5,6 |
1,3 |
1,3 |
Time |
Yok |
1,10 |
1,7,10 |
1,7,10 |
1,7,10 |
1,5,7,10 |
1,3 |
1,3 |
Smalldatetime |
1,2 |
1,4,10 |
1 |
1 |
1,10 |
1,5,10 |
1,11 |
1,11 |
DateTime |
1,2 |
1,4,10 |
1,12 |
1 |
1,10 |
1,5,10 |
1,11 |
1,11 |
Datetime2 |
1,2 |
1,4,10 |
1,10 (ODBC) 1,12 (OLE DB) |
1,10 |
1,10 |
1,5,10 |
1,3 |
1,3 |
Datetimeoffset |
1,2,8 |
1,4,8,10 |
1,8,10 |
1,8,10 |
1,8,10 |
1,10 |
1,3 |
1,3 |
CHAR/wchar (Tarih) |
9 |
- |
9,6 (ODBC) 9,6,12 (OLE DB) |
9,6 (ODBC) 9,6,12 (OLE DB) |
9,6 |
9,5,6 |
Yok |
Yok |
CHAR/wchar (zaman) |
- |
9,10 |
9,7,10 (ODBC) 9,7,10,12 (OLE DB) |
9,7,10 (ODBC) 9,7,10, 12 (OLE DB) |
9,7,10 |
9,5,7,10 |
Yok |
Yok |
CHAR/wchar (datetime) |
9,2 |
9,4,10 |
9,10 (ODBC) 9,10,12 (OLE DB) |
9,10 (ODBC) 9,10,12 (OLE DB) |
9,10 |
9,5,10 |
Yok |
Yok |
CHAR/wchar (datetimeoffset) |
9,2,8 |
9,4,8,10 |
9,8,10 (ODBC) 9,8,10,12 (OLE DB) |
9,8,10 (ODBC) 9,8,10,12 (OLE DB) |
9,8,10 |
9,10 |
Yok |
Yok |
Semboller için anahtar
Simge |
Anlamı |
---|---|
- |
Dönüştürme desteklenir. Bir odbc tanılama kaydı sqlstate 07006 ve "yasak veri türü özniteliği ihlali" iletisi oluşturulur. |
1 |
Sağlanan veri geçerli değilse, bir odbc tanılama kaydı sqlstate 22007 ve "geçersiz bir datetime biçimi" iletisi ile oluşturulur. Hiçbir değişme-e doğru utc isteniyorsa bile datetimeoffset değerleri, utc, Dönüşüm sonra aralıkta saat bölümü olmalıdır. Bunun nedeni, her zaman tds ve sunucu için utc zaman datetimeoffset değerleri normale. Böylece istemci o zaman kontrol gerekir bileşenleridir sonra utc dönüştürme desteklenen aralığın içinde. |
2 |
Saat bileşeni yok sayılır. |
3 |
Kesme ile veri kaybı oluşursa, odbc için tanılama kaydı sqlstate 22001 ve 'String veri, doğru kesilir' iletisi oluşturulur Kesirli saniye basamak (ölçek), hedef sütunun boyutu aşağıdaki tabloya göre belirlenir. Tablo aralığı daha büyük sütun boyutlarını bir ölçek 7 açık. Bu dönüşüm için dokuz kesirli ikinci basamak, odbc tarafından izin verilen en yüksek'e kadar izin vermelidir.
TürZımni ölçek0Zımni ölçek1..7
DBTIME2810,16
DBTIMESTAMP1921..27
DBTIMESTAMPOFFSET2628..34
Kesme ile veri kaybı oluşursa, ole db için hata nakledilir. Datetime2 için kesirli saniye basamak (ölçek) hedef sütunun boyutu aşağıdaki tabloya göre belirlenir. Sütun boyutları daha büyük bir ölçek 9 tablo aralığı için açık. Bu dönüşüm için en çok dokuz kesirli ikinci basamak, ole db tarafından izin verilen en fazla izin vermelidir.
TürZımni ölçek0Zımni ölçek1..9
DBTIME281..9
DBTIMESTAMP1921..29
DBTIMESTAMPOFFSET2628..36
|
4 |
Tarih bileşeni yok sayılır. |
5 |
The timezone utc (örneğin, 00: 00) ayarlayın. |
6 |
Süre sıfır olarak ayarlanır. |
7 |
Tarihi 1900-01-01 için ayarlanır. |
8 |
Dilimimi uzaklık yoksayılır. |
9 |
Dize ayrıştırılmış ve Tarih, datetime, datetimeoffset veya noktalama karakteri ile karşılaştı ve kalan bileşenleri varlığına bağlı zaman değeri dönüştürülür. Dize daha sonra bu işlem tarafından keşfedilen kaynak türü için bu konunun sonundaki tabloda kuralları aşağıdaki hedef türü dönüştürülür. Sağlanan verilerin hatasız, ayrıştırılamaz veya herhangi bir bileşeni izin verilen aralığın dışında yer alıyorsa veya hiçbir edebi türü dönüştürme hedef türü ise, bir hata (ole db) yayınlanan veya odbc tanılama kaydı sqlstate 22018 ve mesaj "ınvalid character value for cast specification" ile oluşturulur. Parametreler, datetime ve smalldatetime yıl aralığı dışında ise bu tür destek, hata (ole db) yayınlanan veya bir odbc tanılama kaydı sqlsate 22007 ve "geçersiz bir datetime biçimi" iletisi ile oluşturulur. Hiçbir değişme-e doğru utc isteniyorsa bile datetimeoffset için dönüşüm için utc, sonra aralığında değeri olmalıdır. Bunun nedeni o zaman istemci doğrulaması gerekiyor bu yüzden tds ve sunucu her zaman datetimeoffset değerleri zaman utc için normale bileşenleridir sonra utc dönüştürme desteklenen aralığın içinde. Değeri desteklenen utc Aralık içinde değilse, bir hata (ole db) haberi ya da bir odbc tanılama kaydı sqlstate 22007 ve "geçersiz bir datetime biçimi" iletisi ile oluşturulur. |
10 |
Kesme ile veri kaybı bir istemci sunucu değişme-e doğru olursa, bir hata (ole db) yayınlanan veya bir odbc tanılama kaydı sqlstate 22008 ve "Tarih Saat alanı taşması" iletisi ile oluşturulur. Değeri ile sunucu tarafından kullanılan utc aralığını temsil aralığın dışında kalırsa da bu hata oluşur. Saniye veya Kesirli saniye kesilme, bir sunucu istemci değişme-e doğru olursa, orada sadece bir uyarı vardır. |
11 |
Kesme ile veri kaybı oluşursa, tanılama kaydı oluşturulur. Sunucu-istemci dönüştürme üzerinde bir uyarı (odbc sqlstate S1000) budur. Bir istemci-sunucu dönüştürmeyi, hatayla (odbc sqlstate 22001) budur. |
12 |
Saniye sıfıra ayarlanır ve Kesirli saniye atılır. Kesme hata mümkündür. |
Yok |
Mevcut SQL Server 2005ve önceki davranış korunur. |