Datautforskaren
Bläddra i och redigera raderna i en SQL Server-tabell i portalen, kör T-SQL med en provkörning först, och vilka satser Datautforskaren kör och vilken behörighet var och en kräver.
Kräver: sqlservercluster/dataRead, sqlservercluster/dataWrite, sqlservercluster/schemaRead, sqlservercluster/queryExecute, sqlservercluster/queryExecuteWrite
Fliken Datautforskare på instanssidan arbetar mot instansens initiala databas. Den öppnas för alla
som har sqlservercluster/dataRead på instansen; varje sak du gör i den kräver sedan sin egen
behörighet, som kontrolleras mot dig, inte mot serverns inloggning sa, som Datautforskaren ansluter
som. Rollen Database Explorer kan bläddra i och redigera rader och köra SELECT, INSERT,
UPDATE, DELETE och MERGE, men inte skapa, ändra eller ta bort objekt; Owner, Contributor,
Platform Owner och Platform Contributor kan göra allt — se Behörigheter.
En stoppad instans har ingen Datautforskare: fliken visar Klustret är otillgängligt tills instansen körs igen.
Hitta en tabell
Panelen till vänster listar databasens scheman under Schemas. Fäll ut ett schema för att se dess
tabeller och vyer, och en tabell för att se dess kolumner, deras typer, vilka av dem som är
NOT NULL, och en nyckelikon på primärnyckeln. För att lista dem krävs
sqlservercluster/schemaRead.
Bläddra i och redigera rader
Välj en tabell, så visar fliken Browse dess rader, 100 åt gången i primärnyckelordning, med
Prev, Next och Refresh. För att läsa rader krävs sqlservercluster/dataRead.
En tabell vars primärnyckel är en enda kolumn kan redigeras på plats, med
sqlservercluster/dataWrite:
- ändra en cells värde;
- Row lägger till en ny rad att fylla i;
- Mark for delete markerar en rad för borttagning.
Ändringarna väntar tills du väljer Submit — som anger hur många de är — eller Discard all. En tabell med en primärnyckel över flera kolumner, eller ingen alls, kan bara läsas här; ändra dess rader med en sats på fliken Query.
Kör satser
Fliken Query har en redigerare för en T-SQL-batch och två knappar:
- Dry run kör batchen i en transaktion och rullar tillbaka den, så att du ser vad den skulle göra — rader som returneras, rader som påverkas, fel — utan att något ändras.
- Run kör batchen och bekräftar den.
Hela batchen körs som en transaktion: om en sats misslyckas behålls inget i batchen. Innan något körs klassificeras varje sats och kontrolleras mot dina behörigheter; resultatet listar varje sats klass och, när du saknar en behörighet, den som saknas under Missing, som du sedan kan be om som tillfällig åtkomst — se Begär åtkomst.
En batch som kör längre än 30 sekunder stoppas, och dess resultat stannar vid 5 000 rader totalt, markerat som avkortat.
Se upp
Varje batch som skickas här sparas med hela sin text, även de som nekats. Alla med
sqlservercluster/readpå instansen — rollerna Reader och Databases Reader inräknade — kan lista de senaste via API:t. Lägg inte lösenord eller andra hemligheter i en sats.
Schemaändringar kräver en provkörning
En batch som skapar, ändrar eller tar bort objekt — TRUNCATE TABLE inräknat — bekräftas bara efter
en felfri provkörning av exakt samma batch:
- Välj Dry run.
- När provkörningen lyckas visas Commit DDL changes. Välj den inom två minuter.
En ändrad batch, en provkörning som är äldre än två minuter eller en provkörning av någon annan räknas inte: bekräftelsen nekas och du gör en ny provkörning.
Vad som körs
| Sats | Kräver |
|---|---|
SELECT, SELECT … INTO inräknat |
sqlservercluster/queryExecute |
INSERT, UPDATE, DELETE, MERGE |
sqlservercluster/queryExecuteWrite |
CREATE av en tabell, ett index, en vy, en procedur, en funktion, ett schema, en utlösare eller en typ; ALTER av en tabell, vy, procedur, funktion, ett schema eller en utlösare |
sqlservercluster/schemaWrite |
DROP av något av dem, TRUNCATE TABLE |
sqlservercluster/schemaWrite och sqlservercluster/schemaDrop |
Alla andra satser nekas, oavsett dina behörigheter, och hela batchen med dem:
- transaktionsstyrning —
BEGIN,COMMIT,ROLLBACKochSAVE TRANSACTION— eftersom Datautforskaren äger transaktionen; EXECochsp_executesql, som skulle kunna köra satser som kontrollen aldrig såg;- allt annat, till exempel
USE,DECLARE,SET,GRANT,CREATE LOGIN,CREATE USERellerBACKUP; - en batch som inte går att tolka.
För sådant ansluter du med en SQL Server-klient i stället — se Anslut till en instans.
Viktigt
Kontrollen tittar på satserna du skickar, inte på vad de gör när de körs, och allt körs som
sa.SELECT … INTOskapar en tabell med enbartsqlservercluster/queryExecute. Kroppen i en procedur, funktion eller utlösare kontrolleras inte sats för sats när den skapas, så den kan innehålla satser som Datautforskaren nekar var för sig — och en utlösare kör dem somsanär en radändring som görs via Datautforskaren utlöser den.
Med CLI:t
stsh sqlserver schemas my-sql -g my-resource-group
stsh sqlserver rows my-sql -g my-resource-group dbo orders
stsh sqlserver query my-sql -g my-resource-group "SELECT COUNT(*) FROM dbo.orders"
stsh sqlserver query my-sql -g my-resource-group "DELETE FROM dbo.orders WHERE id = 42" --dry-runstsh sqlserver rows visar de första 100 raderna. stsh sqlserver query gör först en provkörning och
bekräftar bara om den lyckas, så schemaändringar fungerar också från CLI:t; med --dry-run stannar det
efter provkörningen.