Slik aktiverer du-sysadmin-kontoer til å kjøre "xp_cmdshell" utvidet lagret prosedyre i SQL Server 2000

Sammendrag

Denne artikkelen beskriver hvordan du konfigurerer en Windows-nivå for Microsoft SQL Server Agent-proxy-kontoen som skal brukes ved SQL-pålogginger som ikke er medlemmer av den
serverrollen sysadmin. Artikkelen inneholder også referanser til mer informasjon for å hjelpe deg med å løse problemer som kan oppstå når du prøver å sette opp en proxy-kontoen.

INTRODUKSJON

Xp_cmdshell utvidet lagret prosedyre aktiverer en Windows-kommandoskall fra Microsoft SQL Server 2000. Når xp_cmdshell , utvidet lagret prosedyre utføres av et medlem av serverrollen sysadmin , kjører Windows-prosessen med kommandogrensesnittet med sikkerhetskonteksten til Windows-tjenestekontoen for SQL Server. For eksempel hvis SQL-serveren kjører under en Windows-pålogging som har administrative rettigheter på datamaskinen, får brukeren som åpner en ledetekst med xp_cmdshell utvidet lagret prosedyre tilgang til Windows som lokal administrator. Som standard gis tillatelse til å kjøre xp_cmdshell utvidet lagret prosedyre bare for medlemmer av serverrollen sysadmin . Med denne tillatelsen kan hindre eskalering av rettigheter.

Når du vil starte nye Windows-prosesser med en redusert nivå av rettigheter, kan du bruke SQL Server Agent proxy-kontoen til å konfigurere en Windows-konto med riktig nivå av rettigheter.

Hvis du vil ha mer informasjon

Når du prøver å kjøre xp_cmdshell utvidet lagret prosedyre fra en SQL Server-pålogging som ikke er medlem av serverrollen sysadmin og SQL Server Agent proxy-kontoen er ikke riktig konfigurert, kan du få feilmeldinger som ligner på følgende:

Msg 50001, nivå 1, State 50001
xpsql.cpp: feil 997 fra GetProxyAccount på linje 499

Msg 50001, nivå 1, State 50001
xpsql.cpp: feil 317 fra GetProxyAccount på linje 499

Msg 50001, nivå 1, State 50001

xpsql.cpp: feil 0 fra GetProxyAccount på linje 499

Msg 50001, nivå 1, State 50001
xpsql.cpp: feil 87 fra GetProxyAccount på linje 499

Hvis du må la-sysadmin brukere kjøre xp_cmdshell utvidet lagret prosedyre i SQL Server 2000, må du konfigurere proxy-kontoen og SQL Server oppstart-kontoen være medlem av den lokale administratorgruppen. Når SQL Server kjører jobbene eller kommandoer for brukere som ikke er medlemmer av den faste serverrollen sysadmin, SQL Server Agent- og xp_cmdshell utvidet lagret prosedyre, bruker du proxy-kontoen. Windows security-legitimasjon for proxy-kontoen er lagret i den lokale sikkerhetsinstansen (LSA) hemmeligheter-databasen. Bare Windows-administratorer kan få tilgang til denne informasjonen. Derfor, hvis SQL Server oppstart-kontoen ikke er medlem av den lokale administratorgruppen, brukeren kan ikke lagre eller hente legitimasjonsbeskrivelser for Windows-sikkerhet til å logge på som proxy-kontoen, og xp_cmdshell utvidet lagret prosedyre mislykkes. Hvis du vil aktivere-sysadmin-brukere å kjøre xp_cmdshell utvidet lagret prosedyre, må SQL Server oppstart-kontoen være medlem av den lokale administratorgruppen.

Fast serverrolle for å konfigurere en proxy-kontoen for SQL Server-påloggingene som ikke er medlemmer av sysadmin , bruker du én av følgende metoder.

Metode 1: Bruke SQL Server Enterprise Manager

Konfigurere Windows-konto

Hvis du vil angi Windows-tjenestekontoen for å aktivere-sysadmin-brukere å kjøre xp_cmdshell utvidet lagret prosedyre, gjør du følgende:

  1. Starte SQL Server Enterprise Manager.

  2. I SQL Server Enterprise Manager, utvid Microsoft SQL Server, og utvid deretter SQL Server Group.

  3. Utvid forekomsten av SQL Server som du vil angi proxy-kontoen for.

  4. Utvid Management, høyreklikk SQL Server Agent, og klikk deretter Egenskaper.

  5. Klikk kategorien System for jobben i dialogboksen Egenskaper for SQL Server Agent .

  6. Klikk for å fjerne merket for bare brukere med SysAdmin oppdateringer kan utføre trinnene for CmdExec og ActiveScripting jobb under ikke-SysAdmin jobb trinn proxy-kontoen.

  7. Skriv inn navnet på Windows-kontoen i brukernavn-boksen i dialogboksen SQL Server Agent-proxy-kontoen.

  8. Skriv inn Windows-passordet i passord -boksen.

  9. I domene -boksen skriver du inn domenet som Windows-kontoen er medlem av, og klikk deretter OK to ganger.

Legge til en SQL Server-påloggingskonto

Kontoen du vil gi tillatelse til å utføre xp_cmdshell utvidet lagret prosedyre for å legge til en SQL Server-pålogging, følger du disse trinnene:

  1. I SQL Server organisasjon Manager Utvid
    Sikkerhet.

  2. Høyreklikk SQL Server-pålogging-kontoen du vil gi tillatelse til, og klikk deretter i ruten pålogging
    Egenskaper.

    Obs! Hvis kontoen ikke legges allerede, kan du opprette proxy-kontoen for Windows som login-konto.

  3. Klikk kategorien Database Access i dialogboksen Egenskaper for SQL Server-pålogging .

  4. Klikk for å velge avmerkingsboksen Tillat for hoveddatabasen i listen Angi hvilken database som skal ha tilgang til denne påloggingen , og klikk deretter OK.

  5. Utvid databasene,
    master, og deretter Utvide lagrede prosedyrer.

  6. Finn og høyreklikk den
    xp_cmdshell utvidet lagret prosedyre, og klikk deretter
    Egenskaper.

  7. Klikk tillatelseri dialogboksen Utvidede egenskaper for lagret prosedyre .

  8. Klikk for å velge avmerkingsboksen EXEC for påloggingskontoen som du vil gi tillatelse til å kjøre SQL-serveren, og klikk deretter OK to ganger.

Metode 2: Kjøre et Transact-SQL-skript

Kjør følgende Transact-SQL-skript for å aktivere Windows-kontoen til å utføre xp_cmdshell utvidet lagret prosedyre:

-- Set database to master.
USE master
GO

-- Add a valid Windows account as proxy account.
EXECUTE xp_sqlagent_proxy_account N'SET'
, N'<DomainName>'
, N'<WindowsAccount>'
, N'<WindowsPassword>'
GO
-- Get the proxy account to determine whether it is set up correctly.
EXECUTE xp_sqlagent_proxy_account N'GET'
GO

-- Enable non-system administrators to run the job and to execute xp_cmdshell.
EXECUTE msdb..sp_set_sqlagent_properties @sysadmin_only = 0
GO

Obs! I dette skriptet er < domenenavn > som Windows-kontoen er medlem av domenet.
< WindowsAccount > er navnet på Windows-kontoen.
< WindowsPassword > er passordet for Windows-kontoen.

Kontoen du vil gi tillatelse til å utføre xp_cmdshell utvidet lagret prosedyre, kjører du følgende Transact-SQL-skript for å legge til SQL Server-pålogging:

USE master
GO

-- Grant database access to the SQL Server login account that you want to provide access.
EXEC sp_grantdbaccess '<SQLLogin>'
GO

-- Grant execute permission on xp_cmdshell to the SQL Server login account.
GRANT exec ON xp_cmdshell TO <SQLLogin>
GO

Obs! I dette skriptet er < SQLLogin > SQL Server-pålogging som du vil gi tillatelse til å kjøre xp_cmdshell utvidet lagret prosedyre.

Obs! Proxy-kontoen er Windows-kontoen i sikkerhetskonteksten som SQL Server Agent jobber eller kommandolinjer kjøres. Når du konfigurerer Windows-kontoen for SQL Server Agent proxy-kontoen, må du gi kontoen Windows-nivå "Logg på som en satsvis jobb" brukerrettigheten.

Referanser

For mer informasjon om xp_cmdshell , utvidet lagret prosedyre, kan du se emnet "Transact-SQL Reference" i SQL Server Books Online.

Hvis du vil ha mer informasjon om SQL Server Agent proxy-kontoen, kan du gå til følgende webområder for Microsoft Developer Network (MSDN):

xp_sqlagent_proxy_account
http://msdn2.microsoft.com/en-us/library/aa260700(SQL.80).aspx

xp_cmdshell
http://msdn2.microsoft.com/en-us/library/aa369561.aspx

Definere kontoer for Windows-tjenester
http://msdn2.microsoft.com/en-us/library/aa176564(SQL.80).aspxHvis du vil ha mer informasjon om hvordan du angir tillatelser på proxy-kontoen, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

283811 hvordan du kan endre tjenestekontoen for SQL Server- eller SQL Server Agent uten å bruke SQL Enterprise Manager i SQL Server 2000 eller SQL Server Configuration Manager i SQL Server 2005

Trenger du mer hjelp?

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Microsoft Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×