Försöker köra ett skript som owner men får det inte att fungera "sa" på din server är inte samma användare som sa på en annan server.. därför får den inte den åtkomst.. det finns lite olika sätt att lösa det på... Jag kommer inte ens åt databaserna i samma SQLServer som jag är inloggad på och där skriptet finns. Funderar på om det kan något att göra med i vilken databas skriptet finns. dvs att Owner i det här fallet egentligen inte är sa utan dbo i databasen där skriptet ligger. EXECUTE AS -kontonamnet du skapade-EXECUTE AS
ALTER PROCEDURE [dbo].[Consolidate]
WITH EXECUTE AS OWNER
AS
BEGIN
...
END
När jag försöker köra får jag meddelandet:
The server principal "sa" is not able to access the database "xxx" under the current security context.
Meddelandet är detsamma oavsett om jag är inloggad som sa eller någon annan användare.
(dvs för närvarande kan jag inte köra skriptet överhuvudtaget. Tar jag bort execute as så kan jag köra som sa)
Bakgrunden är att skriptet konsoliderar data från en massa olika databaser och servrar. Jag vill inte ge användarna tillgång till alla databaser bara för att kunna köra skriptet. La därför upp en specifik användare som i princip bara har tillåtelse att köra just det här skriptet.
Finns det något annat sätt?Sv: EXECUTE AS
T.ex.. Skapa Linked Server (Googla).. i denna kopplingen kan du lägga in anv namn/lösenord.
Eller.. om servrarna finns i samma AD.. kan du skapa en AD-användare domain1\SQLUser t.ex. som alla SQL tjänster kör som (services.msc). Samt lägga denna användare som Server Admin i SQL. Sv:EXECUTE AS
Linked server fungerar fint om jag tar bort Execute as
(Jag har lagt upp användare på de andra servrarna som jag ansluter med)Sv: EXECUTE AS
borde vara det du vill ha.
Owner kör den som ägaren (som troligen är disablade sa)
/micke