Konfigurera behörigheter för åtkomst till fjärrdata från en OLEDB-datakälla i SQL Server

I den OPENROWSET OPENDATASOURCE här artikeln beskrivs hur du inaktiverar ad hoc-frågor som använder funktionerna eller i SQL Server.

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 327489

Sammanfattning

Du kan använda OPENROWSET eller OPENDATASOURCE -instruktioner i SQL Server som en ad hoc-metod för att ansluta och komma åt data från en oledb-fjärrprovider, inklusive en SQL Server-fjärrinstans. Dessa instruktioner kan endast användas för att komma åt fjärrdata från OLE DB-datakällor när registeralternativet DisallowAdhocAccess uttryckligen är inställt på 0 för den angivna providern, och det avancerade konfigurationsalternativet Ad Hoc Distributed Queries är aktiverat. När dessa alternativ inte har angetts tillåter standardbeteendet inte ad hoc-åtkomst.

Den här artikeln innehåller ytterligare information om hur du konfigurerar DisallowAdhocAccess via SQL Server Management Studio och registerinställningar samt standardbeteendet.

Inaktivera ad hoc-åtkomst med SQL Server Management Studio

DisallowAdHocAccess Ange egenskapen för providern i SQL Server Management Studio (SSMS)

  1. Öppna SSMS och expandera Providers under Länkade servrar.

  2. Klicka för att välja den OLE DB-provider som du vill använda och välj sedan knappen Provideralternativ .

  3. Rulla nedåt och markera kryssrutan Tillåt inte åtkomst till adhoc och välj OK.

Inaktivera ad hoc-åtkomst med hjälp av registereditorn

Viktigt!

Det här avsnittet, metoden eller uppgiften innehåller steg som beskriver hur du ändrar registret. Det kan uppstå allvarliga problem om du gör detta felaktigt. Följ därför noggrant dessa steg. För extra skydd, säkerhetskopiera registret innan du ändrar det. Då kan du återställa registret om det uppstår problem. Mer information om hur du säkerhetskopierar och återställer registret finns i Hur du säkerhetskopierar och återställer registret i Windows.

När en länkad server har sparats kan egenskapen DisallowAdHocAccess endast anges via en registerinställning.

Lägg till värdet DisallowAdHocAccess

Följ dessa DisallowAdHocAccess steg för att lägga till värdet:

  1. Öppna Registereditorn.

  2. Leta upp och välj sedan nyckeln i registret: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    Exempel: Om du försöker ändra detta för Microsoft OLEDB-providern för ODBC-drivrutiner är nyckeln:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. På menyn Redigera väljer du Lägg till värde och lägger sedan till det här registervärdet:

    Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
    
  4. Avsluta Registereditorn.

Aktivera ad hoc-fjärråtkomst

När du har säkerställt att det avancerade konfigurationsalternativet Ad Hoc Distributed Queries är aktiverat måste du ange registeralternativet DisallowAdhocAccess till 0 för den angivna providern.

Följ dessa steg om du vill ändra ett befintligt DisallowAdHocAccess värde:

  1. Öppna Registereditorn.

  2. Leta upp och välj DisallowAdHocAccess sedan värdet under nyckeln i registret: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    Exempel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0

  3. På menyn Redigera väljer du DWORD, skriver 1 och väljer sedan OK.

  4. Avsluta Registereditorn. För en namngiven instans är registernyckeln annorlunda: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>

Krav på omstart

En ändring av DisallowAdHocAccess värdet från 1 till 0 skulle inte kräva en omstart av SQL-tjänsten, medan en ändring från 0 till 1 måste ha en OMSTART av SQL-tjänsten för att ändringen ska börja gälla.

Standardbeteende

Ad hoc-åtkomst för fjärranslutna OLE BD-datakällor med och OPENROWSET OPENDATASOURCE är inaktiverad som standard och ingen ytterligare konfiguration krävs. Du behöver bara använda de procedurer som beskrivs i artikeln om den här fjärråtkomsten tidigare uttryckligen har aktiverats.

Kommentar

Om du försöker anropa dessa funktioner i ad hoc-frågor med standardinställningen får du ett felmeddelande som liknar följande meddelande: Server: Msg 7415, Level 16, State 1, Line 1 Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' har nekats. Du måste komma åt den här providern via en länkad server.

Med DisallowAdHocAccess egenskapen 1 för en specifik OLE DB-provider måste du med andra ord använda en fördefinierad konfiguration av länkad server för den specifika OLE DB-providern. Du kan inte längre skicka in en ad hoc-anslutningssträng som refererar till providern OPENROWSET till funktionen eller OPENDATASOURCE .

Se även