Freigeben über


sqloptions:initialDatabase (Header-Element)

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

Der SOAP-Header sqloptions:initialDatabase ermöglicht dem Client das Angeben, mit welcher Datenbank zuerst eine Verbindung hergestellt werden soll. Beispiel:

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <sqloptions:initialDatabase           SOAP-ENV:mustUnderstand="1"          value="databaseName"           optional="true" | "false"          filename="databaseFileName" />
    
</SOAP-ENV:Header>

Die Option sqloptions:initialDatabase wird als SOAP-Header verwendet. Der Header besteht aus einem Element namens sqloptions:initialDatabase. Dieses Element besitzt ein obligatorisches Attribut, value. Dabei handelt es sich um einen Zeichenfolgewert. Das value-Attribut gibt den Namen der ersten Datenbank an, mit der eine Verbindung hergestellt werden soll. Diese Zeichenfolge wird auf die gleiche Weise wie der USE-Befehl von Transact-SQL interpretiert. Das Element besitzt zwei optionale Attribute: optional, einen booleschen Wert (der Standardwert ist false), und filename, einen Zeichenfolgewert (der Standardwert ist null). Das optional-Attribut gibt an, ob ein Fehler auftritt, wenn die Verbindung mit der Datenbank einen Fehler erzeugt. login: false bedeutet, dass die Anmeldung zu einem Fehler führt; true bedeutet, dass die Anmeldung fortgesetzt werden kann. Der filename-Wert gibt den Dateinamen der Datenbank an, mit der bei der Anmeldung eine Verbindung hergestellt werden soll. Aus diese Weise kann sich der Benutzer an einer getrennten Datenbank anmelden, da bewirkt wird, dass die Datenbank angefügt wird.

In einer Anforderung kann jeweils nur eine Instanz der Option sqloptions:initialDatabase vorkommen. Die Option darf nicht in einer Antwort verwendet werden. Mehrere Instanzen der Option generieren einen Fehler.

Wenn für den Endpunkt, der die Anforderung empfangen hat, eine Standarddatenbank konfiguriert ist, wird ein Fehler generiert. Aus Sicherheitsgründen kann der Client nicht den sqloptions:initialDatabase-Header für Endpunkte angeben, die über eine Standarddatenbank verfügen.

Wenn SOAP-Sitzungen verwendet werden, muss diese Option in der gleichen Anforderung wie das sqloptions:sqlsession initiate-Attribut verwendet werden. Wenn diese Option in einer Anforderung mit einem sqloptions:sqlSession-Header verwendet wird, die nicht außerdem das initiate-Attribut enthält, wird ein Fehler generiert.

Das folgende Beispiel ist ein Schemafragment für die Option sqloptions:initialDatabase:

<xs:element name="initialDatabase" form="qualified">
    <xs:annotation>
        <xs:documentation>
            Set initial database on login.
        </xs:documentation>
    </xs:annotation>
    <xs:complexType>
        <xs:attribute use="required" name="value" type="xs:string" form="unqualified">
            <xs:annotation>
                <xs:documentation>
                    The name of the initial database to attach to.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute
          name="optional"
          default="false"
          type="xs:boolean"
          form="unqualified">
            <xs:annotation>
                <xs:documentation>
                    Whether the initial database is optional or not.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="filename" type="xs:string" form="unqualified">
            <xs:annotation>
                <xs:documentation>
                    The filename of the database to attach.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
</xs:element>

Beispiele:

Die folgenden Beispiele zeigen die Verwendung des sqloptions:initialDatabase-Headers in SOAP-Anforderungs- und Antwortnachrichten.

Anforderung

<SOAP-ENV:Envelope xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:sql="https://schemas.microsoft.com/sqlserver/2004/SOAP"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:sqlparam="https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlParameter"
                   xmlns:sqlsoaptypes="https://schemas.microsoft.com/sqlserver/2004/SOAP/types"
                   xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
  <SOAP-ENV:Header>
    <sqloptions:initialDatabase SOAP-ENV:mustUnderstand="1" 
                                value="dbTestForAttaching" 
                                optional="false" 
                                filename="!DBDATADIR!\dbTestForAttaching.mdf" />
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <sql:sqlbatch>
      <sql:BatchCommands>
        SELECT name FROM sys.databases WHERE database_id=(SELECT dbid FROM master.dbo.sysprocesses WHERE spid=@@spid)
        SELECT TOP 1 object_id FROM sys.objects WHERE object_id=(SELECT TOP 1 object_id FROM dbTestForAttaching.sys.objects)
      </sql:BatchCommands>
    </sql:sqlbatch>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Antwort

<SOAP-ENV:Envelope xml:space="preserve" 
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                   xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/" 
                   xmlns:sql="https://schemas.microsoft.com/sqlserver/2004/SOAP" 
                   xmlns:sqlsoaptypes="https://schemas.microsoft.com/sqlserver/2004/SOAP/types" 
                   xmlns:sqlrowcount="https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlRowCount" 
                   xmlns:sqlmessage="https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlMessage" 
                   xmlns:sqlresultstream="https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlResultStream" 
                   xmlns:sqltransaction="https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlTransaction" 
                   xmlns:sqltypes="https://schemas.microsoft.com/sqlserver/2004/sqltypes">
  <SOAP-ENV:Body>
    <sql:sqlbatchResponse>
      <sql:sqlbatchResult>
        <sqlresultstream:SqlRowSet xsi:type="sqlsoaptypes:SqlRowSet">
          <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
            <SqlRowSet1 xmlns="urn:schemas-microsoft-com:sql:SqlRowSet1">
              <row>
                <name>dbTestForAttaching</name>
              </row>
            </SqlRowSet1>
          </diffgr:diffgram>
        </sqlresultstream:SqlRowSet>
        <sqlresultstream:SqlRowCount xsi:type="sqlrowcount:SqlRowCount">
          <sqlrowcount:Count>1</sqlrowcount:Count>
        </sqlresultstream:SqlRowCount>
        <sqlresultstream:SqlRowSet xsi:type="sqlsoaptypes:SqlRowSet">
          <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
            <SqlRowSet2 xmlns="urn:schemas-microsoft-com:sql:SqlRowSet2">
              <row>
                <object_id>val</object_id>
              </row>
            </SqlRowSet2>
          </diffgr:diffgram>
        </sqlresultstream:SqlRowSet>
        <sqlresultstream:SqlRowCount xsi:type="sqlrowcount:SqlRowCount">
          <sqlrowcount:Count>1</sqlrowcount:Count>
        </sqlresultstream:SqlRowCount>
      </sql:sqlbatchResult>
    </sql:sqlbatchResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Siehe auch

Verweis