Drop a database user on a linked server.

  • Charles Deaton

    Old Hand

    Points: 372

    I have to be missing something as I can't seem to make this happen. I have 2 SQL 2012 boxes linked and have tried dozens of methods to delete a user from a database on the other server with no luck. I've tried various methods of "sys.sp_dropuser" and "Drop User".

    Am I missing something?

    Charlie

  • Sean Lange

    SSC Guru

    Points: 286442

    Charles Deaton (7/12/2013)


    I have to be missing something as I can't seem to make this happen. I have 2 SQL 2012 boxes linked and have tried dozens of methods to delete a user from a database on the other server with no luck. I've tried various methods of "sys.sp_dropuser" and "Drop User".

    Am I missing something?

    Charlie

    You have to drop the user from the instance where that user belongs. You can't drop remote users, that would be a HUGE security issue.

    _______________________________________________________________

    Need help? Help us help you.

    Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

    Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.

    Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
    Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
    Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
    Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/

  • Erland Sommarskog

    SSC-Insane

    Points: 23802

    EXEC ('DROP USER thatuser') AT YourServer

    [font="Times New Roman"]Erland Sommarskog, SQL Server MVP, www.sommarskog.se[/font]

  • Charles Deaton

    Old Hand

    Points: 372

    That wprk fine for dropping the user from the master database. Is it possible to specify the database I need?

  • Sean Lange

    SSC Guru

    Points: 286442

    Erland Sommarskog (7/14/2013)


    EXEC ('DROP USER thatuser') AT YourServer

    Thanks for the correction. I did not realize you could drop a user remotely like that.

    _______________________________________________________________

    Need help? Help us help you.

    Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

    Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.

    Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
    Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
    Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
    Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/

  • Lowell

    SSC Guru

    Points: 323391

    Charles Deaton (7/15/2013)


    That wprk fine for dropping the user from the master database. Is it possible to specify the database I need?

    just a a USE DatabaseName to the command, if the linked server didn't define the context for the database name :

    EXEC ('Use SandBox; DROP USER thatuser;') AT YourServer

    Lowell


    --help us help you! If you post a question, make sure you include a CREATE TABLE... statement and INSERT INTO... statement into that table to give the volunteers here representative data. with your description of the problem, we can provide a tested, verifiable solution to your question! asking the question the right way gets you a tested answer the fastest way possible!

  • Erland Sommarskog

    SSC-Insane

    Points: 23802

    Very good correct Lowell!

    Here's one that is slicker:

    EXEC LinkedServer.yourdb.sys.sp_executesql N'DROP USER myuser'

    Not the least is this one slick, if any of the items are variable:

    DECLARE @sp_executesql nvarchar(1024) =

    quotename(@server) + '.' + quotename(@db) + '.sys.sp_executesql'

    EXEC @sp_executesql N'DROP USER myuser'

    Key here is that EXEC accepts a variable for the procedure name, and a system procedure always executes in the context of the database from which it is invoked.

    [font="Times New Roman"]Erland Sommarskog, SQL Server MVP, www.sommarskog.se[/font]

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic. Login to reply