Share via


SQL Server tabloları oluşturma

The SQL Server Native istemci OLE DB sağlayıcı exposes the ITableDefinition::CreateTable işlev, allowing consumers to create SQL Server tables. Tüketiciler kullanın. CreateTable tarafından oluşturulan benzersiz adlarla tüketici adlı kalıcı tabloları ve kalıcı veya geçici bir tablo oluşturmak içinSQL Server Yerel istemci OLE DB sağlayıcı.

Tüketici çağırdığında ITableDefinition::CreateTable VARIANT_TRUE, DBPROP_TBL_TEMPTABLE özelliğinin değeri,SQL Server Yerel istemci OLE DB sağlayıcı için tüketici geçici tablo adı oluşturur. Tüketici kümeleri pTableID parametresiCreateTable NULL yöntemine.Geçici tablolara tarafından üretilen adlarla SQL Server Yerel istemci OLE DB sağlayıcı içinde görünmüyor Tablolar satır kümesi, ancak öğeler ( erişilebilirIOpenRowset arabirim.

When consumers specify the table name in the pwszName member of the uName union in the pTableID parameter, the SQL Server Native Client OLE DB provider creates a SQL Server table with that name.SQL Server table naming constraints apply, and the table name can indicate a permanent table, or either a local or global temporary table.Daha fazla bilgi için bkz: TABLO OLUŞTURMA.The ppTableID parameter can be NULL.

The SQL Server Native istemci OLE DB sağlayıcı can generate the names of permanent or temporary tables. Ne zaman tüketici ayarlar pTableID parametre NULL ve ayarlar ppTableID işaret bir geçerli DBID * için SQL Server Yerel istemci OLE DB sağlayıcı oluşturulan tablonun adını döndürür pwszName üye of the uName değeri union'ın DBID işaretppTableID.Geçici olarak oluşturmak için SQL Server Sağlayıcı adlı yerel istemci OLE DB tablo içinde başvurulan bir tablo özellik OLE DB tablo özellik DBPROP_TBL_TEMPTABLE tüketici içerir rgPropertySets parametresi.SQL Server Yerel istemci OLE DB sağlayıcı adlı geçici yerel tablolarıdır.

CreateTable DB_E_BADTABLEID verir eKind üye of the pTableID parametre DBKIND_NAME göstermez.

DBCOLUMNDESC kullanımı

Tüketici, sütun veri türünü kullanarak gösterebilir pwszTypeName üye ya dawType üyesi.Tüketici veri türünü belirtir. pwszTypeName, the SQL Server Yerel istemci OLE DB sağlayıcı değerini yok sayar. wType.

Kullanıyorsanız pwszTypeName üye kullanarak tüketici veri türünü belirtirSQL Server veri adlarýný yazýn. Geçerli veri türü adları TYPE_NAME döndürülen bağlantılardır sütun, PROVIDER_TYPES şema satır kümesi kümesi kümesi.

The SQL Server Native istemci OLE DB sağlayıcı recognizes a alt küme of OLE DB-enumerated DBTYPE values in the wType üye.Daha fazla bilgi için bkz:Veri türü eşleştirme ITableDefinition içinde.

Not

CreateTable Tüketici ayarlar bir ya da DB_E_BADTYPE verirpTypeInfo or pclsid üye sütunun veri türünü belirtmek için.

Sütun adı içinde tüketici belirtir pwszName üyesiuName DBCOLUMNDESC uniondbcid üyesi.Unicode karakter dizesi olarak sütun adı belirtildi.The eKind üye of dbcid must be DBKIND_NAME.CreateTable DB_E_BADCOLUMNID verir eKind geçersiz pwszName , NULL ise veya değeripwszName bir geçerli değil.SQL Server tanıtıcısı.

Tüm sütun özellikleri, tablo için tanımlanmış tüm sütunlarda kullanılabilir.CreateTable özellik değerleri, DB_S_ERRORSOCCURRED veya DB_E_ERRORSOCCURRED dönebilirsiniz küme içindeki çakışma. CreateTable Geçersiz sütun özellik ayarları neden olduğunda hata verir...SQL Server Tablo oluşturma hatası.

Sütun özellikleri bir DBCOLUMNDESC gibi yorumlanır.

Özellik KIMLIĞI

Açıklama

dbprop_col_autoincrement

R/W: Okuma/yazma

Varsayılan: VARIANT_FALSE açıklaması: Kimlik özellik oluşturulan sütun ayarlar. Için SQL Server, kimlik özellik, tablo içindeki tek bir sütun için geçerlidir. Çok için tek bir sütun, bir hata üretir VARIANT_TRUE için özellik ayarlama, SQL Server Sunucu üzerinde tablo oluşturmak, yerel istemci OLE DB sağlayıcı çalışır.

The SQL Server kimlik özellik is only valid for the integer, numeric, and decimal types when the scale is 0.Özellik VARIANT_TRUE için bir sütun üzerinde başka bir veri türü ayarı, bir hata üretir, SQL Server Sunucu üzerinde tablo oluşturmak, yerel istemci OLE DB sağlayıcı çalışır.

The SQL Server Native istemci OLE DB sağlayıcı returns DB_S_ERRORSOCCURRED when DBPROP_COL_AUTOINCREMENT and DBPROP_COL_NULLABLE are both VARIANT_TRUE and the dwOption of DBPROP_COL_NULLABLE is not DBPROPOPTIONS_REQUIRED.Her iki VARIANT_TRUE DBPROP_COL_AUTOINCREMENT ve DBPROP_COL_NULLABLE olduğunda DB_E_ERRORSOCCURRED döndürülür ve dwOption DBPROP_COL_NULLABLE DBPROPOPTIONS_REQUIRED TL'ye eşittir.Sütun ile tanımlanmış SQL Server kimlik özellik ve DBPROP_COL_NULLABLE dwStatus üye DBPROPSTATUS_CONFLICTING için küme.

dbprop_col_default

R/W: Okuma/yazma

Varsayılan: Hiçbiri

Açıklama: Oluşturur.SQL Server Sütun için VARSAYıLAN kısıtlama.

The vValue DBPROP üye can be any of a number of types.The vValue.vt üye should specify a type compatible with the data type of the sütun.Örneğin, tanımlama BSTR N/A DBTYPE_WSTR uyumlu bir eşleşme olarak tanımlanmış bir sütun için varsayýlan deðer olarak.Aynı varsayılan DBTYPE_R8 hata üretir gibi tanımlanmış bir sütun tanımlamak, SQL Server Sunucu üzerinde tablo oluşturmak, yerel istemci OLE DB sağlayıcı çalışır.

dbprop_col_description

R/W: Okuma/yazma

Varsayılan: Hiçbiri

Açıklama: DBPROP_COL_DESCRIPTION sütun özellik tarafından uygulanmadıSQL Server Yerel istemci OLE DB sağlayıcı.

The dwStatus üye of the DBPROP structure returns DBPROPSTATUS_NOTSUPPORTED when the consumer attempts to write the özellik value.

özellik ayarlamak için önemli önemli hata oluşturur değil SQL Server Yerel istemci OLE DB sağlayıcı. Tüm diğer parametre değerleri geçerliyse, SQL Server Tablo oluşturulur.

dbprop_col_fixedlength

R/W: Okuma/yazma

Varsayılan: VARIANT_FALSE

Açıklama: The SQL Server Tüketici, sütun veri türünü kullanarak tanımlayan veri türü eşleştirme belirlerken, DBPROP_COL_FIXEDLENGTH yerel istemci OLE DB sağlayıcı kullanır wType the DBCOLUMNDESC üye.Daha fazla bilgi için bkz:Veri türü eşleştirme ITableDefinition içinde.

dbprop_col_nullable

R/W: Okuma/yazma

Varsayılan: Hiçbiri

Açıklama: Tablonun oluştururkenSQL Server Özellik ise sütun null değerleri kabul yerel istemci OLE DB sağlayıcı gösterir küme. Özellik, sütunun değeri tarafından küme NULL kabul özelliği ayarlandığında değil SQL Server Varsayılan veritabanı seçeneği ANSI_NULLS.

The SQL Server Native istemci OLE DB sağlayıcı is an ISO-compliant sağlayıcı. Bağlanılan oturumların ISO davranışları davranışlar gösterir.Tüketici DBPROP_COL_NULLABLE ayarlamak, sütunlar, null değerleri kabul.

dbprop_col_primarykey

R/W: Okuma/yazma

Varsayılan: VARIANT_FALSE açıklaması: Zaman VARIANT_TRUE, SQL Server Sütun, yerel istemci OLE DB sağlayıcı ile bir birincil anahtar kısıtlaması oluşturur.

Bir sütunun özellik olarak tanımladığınızda, yalnızca tek bir sütun kısıtlama belirleyebilirsiniz.Özellik VARIANT_TRUE fazlasını için tek bir sütun hata döndürüyor ayarlama, SQL Server Yerel istemci OLE DB sağlayıcı oluşturmayı denediğinde SQL Server TABLO.

Not: Tüketici kullanabilirsinizIIndexDefinition::CreateIndex , iki veya daha çok sütunu bulunan bir birincil anahtar kısıtlaması oluşturmak için.

The SQL Server Native istemci OLE DB sağlayıcı returns DB_S_ERRORSOCCURRED when DBPROP_COL_PRIMARYKEY and DBPROP_COL_UNIQUE are both VARIANT_TRUE and the dwOption of DBPROP_COL_UNIQUE is not DBPROPOPTIONS_REQUIRED.

Her iki VARIANT_TRUE DBPROP_COL_PRIMARYKEY ve DBPROP_COL_UNIQUE olduğunda DB_E_ERRORSOCCURRED döndürülür ve dwOption DBPROP_COL_UNIQUE DBPROPOPTIONS_REQUIRED TL'ye eşittir.Sütun ile tanımlanmış SQL Server kimlik özellik ve DBPROP_COL_PRIMARYKEY dwStatus üye DBPROPSTATUS_CONFLICTING için küme.

The SQL Server Native istemci OLE DB sağlayıcı returns an error when DBPROP_COL_PRIMARYKEY and DBPROP_COL_NULLABLE are both VARIANT_TRUE.

The SQL Server Native istemci OLE DB sağlayıcı returns an error from SQL Server when the consumer attempts to create a birincil anahtar constraint on a sütun of invalid SQL Server data type. birincil anahtar kısıtlamaları ile oluşturulan sütunlarda tanımlanamaz SQL Server veri türleri bit, Text, ntext, and Image.

dbprop_col_unique

R/W: Okuma/yazma

Varsayılan: VARIANT_FALSE açıklaması: Uygulanır.SQL Server UNIQUE sınırlamasıyla için sütun.

Bir sütunun özellik olarak tanımladığınızda, kısıtlama, yalnızca tek bir sütun üzerinde uygulanır.Tüketici kullanabilirsiniz IIndexDefinition::CreateIndex birleşik iki veya daha fazla sütun değerleri bir UNIQUE sınırlaması uygulamak.

The SQL Server Native istemci OLE DB sağlayıcı returns DB_S_ERRORSOCCURRED when DBPROP_COL_PRIMARYKEY and DBPROP_COL_UNIQUE are both VARIANT_TRUE and dwOption is not DBPROPOPTIONS_REQUIRED.

Her iki VARIANT_TRUE DBPROP_COL_PRIMARYKEY ve DBPROP_COL_UNIQUE olduğunda DB_E_ERRORSOCCURRED döndürülür ve dwOption DBPROPOPTIONS_REQUIRED TL'ye eşittir.Sütun ile tanımlanmış SQL Server kimlik özellik ve DBPROP_COL_PRIMARYKEY dwStatus üye DBPROPSTATUS_CONFLICTING için küme.

The SQL Server Native istemci OLE DB sağlayıcı returns DB_S_ERRORSOCCURRED when DBPROP_COL_NULLABLE and DBPROP_COL_UNIQUE are both VARIANT_TRUE and dwOption is not DBPROPOPTIONS_REQUIRED.

Her iki VARIANT_TRUE DBPROP_COL_NULLABLE ve DBPROP_COL_UNIQUE olduğunda DB_E_ERRORSOCCURRED döndürülür ve dwOption DBPROPOPTIONS_REQUIRED TL'ye eşittir.Sütun ile tanımlanmış SQL Server kimlik özellik ve DBPROP_COL_NULLABLE dwStatus üye DBPROPSTATUS_CONFLICTING için küme.

The SQL Server Native istemci OLE DB sağlayıcı returns an error from SQL Server when the consumer attempts to create a UNIQUE constraint on a sütun of invalid SQL Server data type. UNIQUE constraints cannot be defined on columns created with the SQL Serverbit data type.

Tüketici çağırdığında ITableDefinition::CreateTable, the SQL Server Yerel istemci OLE DB sağlayıcı tablo özelliklerini aşağıdaki gibi yorumlar.

Özellik KIMLIĞI

Açıklama

dbprop_tbl_temptable

R/W: Okuma/yazma

Varsayılan: VARIANT_FALSE açıklaması: VarsayılanSQL Server Yerel istemci OLE DB sağlayıcı Tüketici tarafından adlı bir tablo oluşturur. Zaman, VARIANT_TRUE SQL Server Yerel istemci OLE DB sağlayıcı için tüketici geçici tablo adı oluşturur. Tüketici kümeleri pTableID parametresiCreateTable için NULL.The ppTableID parameter must contain a valid pointer.

satır kümesi başarıyla oluşturulan tablo açılamadı, tüketici istekleri SQL Server Yerel istemci OLE DB sağlayıcı, imleç desteklenen satır kümesi açar. Geçilen özellik kümeleri içinde herhangi satır kümesi kümesi özelliklerini belirtilebilir.

Bu örnek oluşturur bir SQL Server TABLO.

// This CREATE TABLE statement shows the details of the table created by 
// the following example code.
//
// CREATE TABLE OrderDetails
// (
//    OrderID      int      NOT NULL
//    ProductID   int      NOT NULL
//    CONSTRAINT PK_OrderDetails
//         PRIMARY KEY CLUSTERED (OrderID, ProductID),
//    UnitPrice   money      NOT NULL,
//    Quantity   int      NOT NULL,
//    Discount   decimal(2,2)   NOT NULL
//        DEFAULT 0
// )
//
// The PRIMARY KEY constraint is created in an additional example.
HRESULT CreateTable
    (
    ITableDefinition* pITableDefinition
    )
    {
    DBID            dbidTable;
    const ULONG     nCols = 5;
    ULONG           nCol;
    ULONG           nProp;
    DBCOLUMNDESC    dbcoldesc[nCols];
    
    HRESULT         hr;

    // Set up column descriptions. First, set default property values for
    //  the columns.
    for (nCol = 0; nCol < nCols; nCol++)
        {
        dbcoldesc[nCol].pwszTypeName = NULL;
        dbcoldesc[nCol].pTypeInfo = NULL;
        dbcoldesc[nCol].rgPropertySets = new DBPROPSET;
        dbcoldesc[nCol].pclsid = NULL;
        dbcoldesc[nCol].cPropertySets = 1;
        dbcoldesc[nCol].ulColumnSize = 0;
        dbcoldesc[nCol].dbcid.eKind = DBKIND_NAME;
        dbcoldesc[nCol].wType = DBTYPE_I4;
        dbcoldesc[nCol].bPrecision = 0;
        dbcoldesc[nCol].bScale = 0;

        dbcoldesc[nCol].rgPropertySets[0].rgProperties = 
            new DBPROP[NCOLPROPS_MAX];
        dbcoldesc[nCol].rgPropertySets[0].cProperties = NCOLPROPS_MAX;
        dbcoldesc[nCol].rgPropertySets[0].guidPropertySet =
            DBPROPSET_COLUMN;

        for (nProp = 0; nProp < NCOLPROPS_MAX; nProp++)
            {
            dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].
                dwOptions = DBPROPOPTIONS_REQUIRED;
            dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].colid
                 = DB_NULLID;

            VariantInit(
                &(dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].
                    vValue));
            
            dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].
                vValue.vt = VT_BOOL;
            }
        }

    // Set the column-specific information.
    dbcoldesc[0].dbcid.uName.pwszName = L"OrderID";
    dbcoldesc[0].rgPropertySets[0].rgProperties[0].dwPropertyID = 
        DBPROP_COL_NULLABLE;
    dbcoldesc[0].rgPropertySets[0].rgProperties[0].vValue.boolVal = 
        VARIANT_FALSE;
    dbcoldesc[0].rgPropertySets[0].cProperties = 1;

    dbcoldesc[1].dbcid.uName.pwszName = L"ProductID";
    dbcoldesc[1].rgPropertySets[0].rgProperties[0].dwPropertyID = 
        DBPROP_COL_NULLABLE;
    dbcoldesc[1].rgPropertySets[0].rgProperties[0].vValue.boolVal = 
        VARIANT_FALSE;
    dbcoldesc[1].rgPropertySets[0].cProperties = 1;

    dbcoldesc[2].dbcid.uName.pwszName = L"UnitPrice";
    dbcoldesc[2].wType = DBTYPE_CY;
    dbcoldesc[2].rgPropertySets[0].rgProperties[0].dwPropertyID = 
        DBPROP_COL_NULLABLE;
    dbcoldesc[2].rgPropertySets[0].rgProperties[0].vValue.boolVal = 
        VARIANT_FALSE;
    dbcoldesc[2].rgPropertySets[0].cProperties = 1;

    dbcoldesc[3].dbcid.uName.pwszName = L"Quantity";
    dbcoldesc[3].rgPropertySets[0].rgProperties[0].dwPropertyID = 
        DBPROP_COL_NULLABLE;
    dbcoldesc[3].rgPropertySets[0].rgProperties[0].vValue.boolVal = 
        VARIANT_FALSE;
    dbcoldesc[3].rgPropertySets[0].cProperties = 1;

    dbcoldesc[4].dbcid.uName.pwszName = L"Discount";
    dbcoldesc[4].wType = DBTYPE_NUMERIC;
    dbcoldesc[4].bPrecision = 2;
    dbcoldesc[4].bScale = 2;
    dbcoldesc[4].rgPropertySets[0].rgProperties[0].dwPropertyID = 
        DBPROP_COL_NULLABLE;
    dbcoldesc[4].rgPropertySets[0].rgProperties[0].vValue.boolVal = 
        VARIANT_FALSE;
    dbcoldesc[4].rgPropertySets[0].rgProperties[1].dwPropertyID = 
        DBPROP_COL_DEFAULT;
    dbcoldesc[4].rgPropertySets[0].rgProperties[1].vValue.vt = VT_BSTR;
    dbcoldesc[4].rgPropertySets[0].rgProperties[1].vValue.bstrVal =
        SysAllocString(L"0");
    dbcoldesc[4].rgPropertySets[0].cProperties = 2;

    // Set up the dbid for OrderDetails.
    dbidTable.eKind = DBKIND_NAME;
    dbidTable.uName.pwszName = L"OrderDetails";

    if (FAILED(hr = pITableDefinition->CreateTable(NULL, &dbidTable,
        nCols, dbcoldesc, NULL, 0, NULL, NULL, NULL)))
        {
        DumpError(pITableDefinition, IID_ITableDefinition);
        goto SAFE_EXIT;
        }

SAFE_EXIT:
    // Clean up dynamic allocation in the property sets.
    for (nCol = 0; nCol < nCols; nCol++)
        {
        for (nProp = 0; nProp < NCOLPROPS_MAX; nProp++)
            {
            if (dbcoldesc[nCol].rgPropertySets[0].rgProperties[nProp].
                vValue.vt == VT_BSTR)
                {
                SysFreeString(dbcoldesc[nCol].rgPropertySets[0].
                    rgProperties[nProp].vValue.bstrVal);
                }
            }
        
        delete [] dbcoldesc[nCol].rgPropertySets[0].rgProperties;
        delete [] dbcoldesc[nCol].rgPropertySets;
        }
    
    return (hr);
    }

See Also

Concepts