Aracılığıyla paylaş


Meta Veriler - SQL Server Yerel İstemcisinde Parametre ve Satır Kümesi

Şunlar için geçerlidir: Sql ServerAzure SQL VeritabanıAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Azure SQL Veritabanı

Bu konu, OLE DB tarih ve saat geliştirmeleriyle ilgili olarak aşağıdaki tür ve tür üyeleri hakkında bilgi sağlar.

  • DBBINDING yapısı

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

AŞAĞıDAKI bilgiler DBPARAMINFO yapısında prgParamInfoaracılığıyla döndürülür:

Parametre Türü wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
tarih DBTYPE_DBDATE 6 10 0 Berrak
Saat DBTYPE_DBTIME2 10 8, 10..16 0..7 Ayarlamak
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Berrak
datetime DBTYPE_DBTIMESTAMP 16 23 3 Berrak
datetime2 DBTYPE_DBTIMESTAMP 16 19,21..27 0..7 Ayarlamak
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26,28..34 0..7 Ayarlamak

Bazı durumlarda değer aralıklarının sürekli olmadığını fark edin. Bunun nedeni kesirli duyarlık sıfırdan büyük olduğunda ondalık noktanın eklenmesidir.

DBPARAMFLAGS_SS_ISVARIABLESCALE yalnızca SQL Server 2008 (10.0.x) (veya üzeri) sunucuya bağlı olduğunda geçerlidir. DBPARAMFLAGS_SS_ISVARIABLESCALE hiçbir zaman alt düzey sunuculara bağlanıldığında ayarlanmadı.

ICommandWithParameters::SetParameterInfo ve Zımni Parametre Türleri

DBPARAMBINDINFO yapısında sağlanan bilgiler aşağıdakilere uygun olmalıdır:

pwszDataSourceType

(sağlayıcıya özgü)
pwszDataSourceType

(OLE DB genel)
ulParamSize bScale
DBTYPE_DATE 6 Göz ardı
tarih DBTYPE_DBDATE 6 Göz ardı
DBTYPE_DBTIME 10 Göz ardı
Saat DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Göz ardı
datetime 16 Göz ardı
datetime2 veya DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

bPrecision parametresi yoksayılır.

Sunucuya veri gönderilirken "DBPARAMFLAGS_SS_ISVARIABLESCALE" yoksayılır. Uygulamalar, sağlayıcıya özgü "datetime" ve "smalldatetime" tür adlarını kullanarak eski tablosal veri akışı (TDS) türlerinin kullanılmasını zorlayabilir. SQL Server 2008 (10.0.x) (veya üzeri) sunuculara bağlandığında, "datetime2" biçimi kullanılır ve gerekirse, tür adı "datetime2" veya "DBTYPE_DBTIMESTAMP" olduğunda örtük bir sunucu dönüştürmesi gerçekleşir. bScale, sağlayıcıya özgü tür adları "datetime" veya "smalldatetime" kullanılırsa yoksayılır. Aksi takdirde, uygulamaların bScale doğru ayarlandığından emin olması gerekir. "DBTYPE_DBTIMESTAMP" kullanan SQL Server 2005'ten (9.x) MDAC ve SQL Server Native Client'dan yükseltilen uygulamalar, bScale doğru ayarlanmazsa başarısız olur. SQL Server 2008 (10.0.x) öncesi sunucu örneklerine bağlanıldığında, "DBTYPE_DBTIMESTAMP" ile 0 veya 3 dışındaki bir bScale değeri bir hatadır ve E_FAIL döndürülür.

ICommandWithParameters::SetParameterInfo çağrılmadığında sağlayıcı, IAccessor::CreateAccessor'da belirtildiği gibi bağlama türünden sunucu türünü şu şekilde ima eder:

Bağlama Türü pwszDataSourceType

(sağlayıcıya özgü)
DBTYPE_DATE datetime2(0)
DBTYPE_DBDATE tarih
DBTYPE_DBTIME time(0)
DBTYPE_DBTIME2 time(7)
DBTYPE_DBTIMESTAMP datetime2(7)
DBTYPE_DBTIMESTAMPOFFSET datetimeoffset(7)

IColumnsRowset::GetColumnsRowset

IColumnsRowset::GetColumnsRowset aşağıdaki sütunları döndürür:

Sütun Türü DBCOLUMN_TYPE DBCOLUM_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
tarih DBTYPE_DBDATE 6 10 0 Berrak
Saat DBTYPE_DBTIME2 10 8, 10..16 0..7 Ayarlamak
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Berrak
datetime DBTYPE_DBTIMESTAMP 16 23 3 Berrak
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Ayarlamak
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Ayarlamak

DBCOLUMN_FLAGS DBCOLUMNFLAGS_ISFIXEDLENGTH tarih/saat türleri için her zaman doğrudur ve aşağıdaki bayraklar her zaman yanlıştır:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

Sütunun nasıl tanımlandığına ve gerçek sorguya bağlı olarak kalan bayraklar (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE ve DBCOLUMNFLAGS_WRITEUNKNOWN) ayarlanabilir.

Bir uygulamanın DBCOLUMN_TYPE DBTYPE_DBTIMESTAMP olduğu sunucu sütun türünü belirlemesine izin vermek için DBCOLUMN_FLAGS'de yeni bir bayrak DBCOLUMNFLAGS_SS_ISVARIABLESCALE sağlanır. sunucu türünü tanımlamak için DBCOLUMN_SCALE veya DBCOLUMN_DATETIMEPRECISION de kullanılmalıdır.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE yalnızca SQL Server 2008 (10.0.x) (veya üzeri) sunucuya bağlı olduğunda geçerlidir. DBCOLUMNFLAGS_SS_ISVARIABLESCALE, alt düzey sunuculara bağlanıldığında tanımlanmamıştır.

IColumnsInfo::GetColumnInfo

DBCOLUMNINFO yapısı aşağıdaki bilgileri döndürür:

Parametre Türü wType ulColumnSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
tarih DBTYPE_DBDATE 6 10 0 Berrak
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Ayarlamak
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Berrak
datetime DBTYPE_DBTIMESTAMP 16 23 3 Berrak
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Ayarlamak
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Ayarlamak

dwFlagsiçinde DBCOLUMNFLAGS_ISFIXEDLENGTH tarih/saat türleri için her zaman doğrudur ve aşağıdaki bayraklar her zaman false olur:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

Kalan bayraklar (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE ve DBCOLUMNFLAGS_WRITEUNKNOWN) ayarlanabilir.

dwFlags'da uygulamanın wType DBTYPE_DBTIMESTAMP sütun türünü belirlemesine izin vermek için yeni bir bayrak DBCOLUMNFLAGS_SS_ISVARIABLESCALE sağlanır. bScale, sunucu türünü tanımlamak için de kullanılmalıdır.

Ayrıca Bkz.

Meta Verileri (OLE DB)