Gelişmiş tarih veya saat türleri (OLE DB ve ODBC) için toplu kopyalama değişiklikleri
Bu konuda toplu kopya işlevlerini desteklemek için tarih/saat geliştirmeleri açıklanır.Bu konudaki bilgiler, OLE DB ve ODBC içinde geçerlidirSQL ServerYerel istemci.
Dosya biçimi
Etkileşimli biçimindeki dosyaları oluştururken, tarih/saat türleri ve karşılık gelen ana bilgisayar dosyası veri türü adlarını belirtmek için kullanılan girdi aşağıdaki tabloda açıklanmaktadır.
Dosya depolama türü |
Ana dosya veri türü |
İstemine yanıt: "Enter the file storage type of field <field_name> [<default>]:" |
---|---|---|
Tarih Saat |
SQLDATETIME |
d |
Smalldatetime |
SQLDATETIM4 |
D |
Tarih |
SQLDATE |
de |
Time |
SQLTIME |
e |
Datetime2 |
SQLDATETIME2 |
D2 |
Datetimeoffset |
SQLDATETIMEOFFSET |
yapın |
XML biçimi dosyası XSD aşağıdaki eklemeleri gerekir:
<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 dosyaları
Açıklandığı gibi karakter veri dosyalarını, tarih ve saat değerlerini temsil edilen "veri biçimleri: Veri türü desteği için ODBC tarih/saat geliştirmeleriİçin ODBC ya da dizeleri ve rakamları"bölümünü Veri türü desteği için OLE DB tarih/saat geliştirmeleriOLE DB.
Yerel veri dsya, dört yeni türü için tarih ve saat değerlerini, TDS temsilini 7 bir ölçek ile temsil edilir (Bu, desteklenen en yüksek olduğu için SQL Serverve Kullanımıbcp veri dosyalarını değil bu sütun ölçeği).Varolan depolanmasını hiçbir değişiklik yokdatetimevesmalldatetimetürü veya bunların tablo verisi akışı (TDS) sunumu.
Depolama boyutları farklı depolama türü için OLE DB için aşağıda belirtilmiştir:
Dosya depolama türü |
Depolama boyutu |
---|---|
datetime |
8 |
smalldatetime |
4 |
tarih |
3 |
saat |
6 |
datetime2 |
9 |
datetimeoffset |
11 |
Boyutları için ODBC gibidir.Her zaman BCP.exe duyarlılık sunucudan alır duyarlılık biçimi veya veri dosyalarını saklamak gerekli değildir, çünkü olduğunu unutmayın.
Dosya depolama türü |
Depolama boyutu |
Depolama biçimi |
---|---|---|
tarih/saat (d) |
8 |
TDS |
smalldatetime (D) |
4 |
TDS |
Tarih (de) |
3 |
TDS |
saat (e) |
6 |
TDS |
datetime2 (d2) |
9 |
TDS |
datetimeoffset (iş) |
11 |
TDS |
Sqlncli.h, BCP türleri
Aşağıdaki türleri için ODBC BCP API uzantıları kullanılmak üzere sqlncli.h tanımlanır.İle bu tür geçirileneUserDataTypeparametreIBCPSession::BCPColFmtOLE DB.
Dosya depolama türü |
Ana dosya veri türü |
Sqlncli.h ile kullanmak için yazın IBCPSession::BCPColFmt |
Değer |
---|---|---|---|
Tarih Saat |
SQLDATETIME |
BCP_TYPE_SQLDATETIME |
0x3d |
Smalldatetime |
SQLDATETIM4 |
BCP_TYPE_SQLDATETIME4 |
0x3a |
Tarih |
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üşümlerini
Aşağıdaki tabloda, dönüştürme bilgileri sağlar.
OLE DB Note The following conversions are performed by IBCPSession.IRowsetFastLoad uses OLE DB conversions as defined in Istemciden sunucuya gerçekleştirilen dönüştürme.Not tarih/saat değerlerini 1 olarak yuvarlanır/saniye ve smalldatetime 300th değerlerine sahip saniye aşağıda belirtilen istemci dönüştürme gerçekleştirdikten sonra sıfır olarak ayarlayın.Tarih saat yuvarlama, saat ve dakika, ancak tarihi değil yayar.
--İçin> Kimden: |
tarih |
saat |
smalldatetime |
datetime |
datetime2 |
datetimeoffset |
Karakter: |
wchar |
---|---|---|---|---|---|---|---|---|
Tarih |
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 |
Tarih Saat |
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 (saat) |
- |
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 (tarih) |
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 |
Simge anahtar
Simge |
Anlamı |
---|---|
- |
Dönüştürme desteklenen. Bir ODBC tanı kaydı SQLSTATE 07006 ve message "sınırlı veri türü özniteliği ihlali" ile oluşturulur. |
1 |
Sağlanan veriler geçerli değil, bir ODBC tanı kaydı SQLSTATE 22007 ve "Geçersiz tarih biçimi" iletisi oluşturulur.Datetimeoffset değerler için saat bölümü içinde olmalıdır aralık UTC UTC için dönüştürme istenen bile dönüştürme sonrasında.Her saat TDS ve sunucu için UTC saat datetimeoffset değerleri normalize olmasıdır.O saat istemci işaretlemeniz gerekir; böylece bileşenleridir içinde aralık UTC dönüştürme sonra desteklenen. |
2 |
Saat bileşeni yok sayılır. |
3 |
Kesme ile veri kaybı oluşursa, ODBC için tanılama kayıt SQLSTATE 22001 sağ kesildi iletisini 'dize veri' ile oluşturulan kesirli saniye basamak (Ölçek) hedef sütun boyutunun aşağıdakilere göre belirlenir tablo.Sütun boyutları için daha fazla tablo aralık 7 ölçeği açık.Bu dönüştürme için en çok dokuz kesirli ikinci basamak, ODBC tarafından izin verilen en fazla izin vermelisiniz.
TürÖrtülü ölçeği0Örtülü ölçeği1..7
DBTIME2810,16
DBTIMESTAMP1921..27
DBTIMESTAMPOFFSET2628..34
OLE DB için veri kaybı ile kesme ortaya çıkarsa, hata deftere nakledilir.Kesirli saniye basamak (Ölçek) hedef sütun boyutunun aşağıdakilere göre belirlenir datetime2 için tablo.Büyük bir Ölçek 9 Tablo aralık sütun boyutları için açık.Bu dönüşüm, en çok dokuz kesirli ikinci basamak, OLE DB tarafından izin verilen üst sınırı için izin vermelisiniz.
TürÖrtülü ölçeği0Örtülü ölçeği1..9
DBTIME281..9
DBTIMESTAMP1921..29
DBTIMESTAMPOFFSET2628..36
|
4 |
Tarih bileşeni yok sayılır. |
5 |
Saat UTC (örneğin, 00: 00) için küme. |
6 |
saat sıfır olarak küme. |
7 |
Tarih, 1900-01-01 için küme. |
8 |
Saat farkı göz ardı edilir. |
9 |
Dize ayrıştırılır ve bir tarihi, tarih, datetimeoffset veya saat değeri, ilk karşılaşılan noktalama karakteri ve diğer bileşenlerin durum dönüştürülür.Dize daha sonra dönüştürülür hedef türü, bu işlem tarafından belirlenen kaynak türü için bu konunun sonundaki tabloda kurallarına.Hatasız, sağlanan veriler ayrıştırılamıyor veya herhangi bir bileşen bölümü, izin verilen aralık dışında veya hedef türüne dönüştürme hazır türünden ise, bir hata (OLE DB) deftere nakledildiği veya SQLSTATE 22018 ve ileti "geçersiz karakter değeri for cast specification" bir ODBC tanı kaydı oluşturulur.Parametreleri, tarih ve smalldatetime yıl aralık dışında bu destek, bir hata (OLE DB) deftere veya SQLSATE 22007 "Geçersiz tarih biçimi" iletisi ile bir ODBC tanı kaydı oluşturulur. Datetimeoffset için değeri içinde olmalıdır aralık UTC UTC için dönüştürme istenen bile dönüştürme sonrasında.Bunun nedeni, istemci bu saat doğrulamanız gerekir; böylece TDS ve sunucu her saat saat datetimeoffset değerleri için UTC, normalize bileşenleridir UTC dönüştürme sonra desteklenen aralıkta.Değer desteklenen UTC aralık içinde değil, bir hata (OLE DB) deftere nakledildiği veya SQLSTATE 22007 "Geçersiz tarih biçimi" iletisi ile bir ODBC tanı kaydı oluşturulur. |
10 |
Kesilmesi veri kaybına sahip bir istemci sunucu dönüştürme ortaya çıkarsa, hata (OLE DB) deftere nakledildiği veya SQLSTATE 22008 "Tarih saat alan taşması" iletisi ile bir ODBC tanı kaydı oluşturulur.Değer sunucu tarafından kullanılan UTC aralık temsil edilebilir aralık dışında kalırsa da bu hata oluşur.Bir sunucu, saniye veya kesirli saniye kesme istemci dönüştürme oluşursa, bir uyarı yok. |
11 |
Kesme ile veri kaybı olursa, bir tanı kaydı oluşturulur. Bir sunucu ve istemci dönüştürme hakkında bir uyarı (ODBC SQLSTATE S1000) budur. İstemci-sunucu dönüştürme, bu hata (ODBC SQLSTATE 22001),. |
12 |
Saniye sıfır olarak küme ve kesirli saniye atılır.Kesme hata mümkündür. |
Yok |
VarolanSQL Server 2005ve eski davranış saklanır. |