Problem access db from VB.NET after restoration

  • Hi,

    I am working on a .NET application (VB.NET). We had to restore our SQL server database from yesterday's backup as we accidentally overwrote some tables. After restorign, we are able to log to the database alright from SQL Query analyzer and Enterprise manager but when we try to access it from the .NET application, it gives an error message "Cannot open database requested in login '****' login fails.

    Login failed for user '****'". What could be the reason and what would be the solution?

    Thanks in advance

     

  • did you resinc the users ?

    check sp_change_users_login  in BOL !

    this is what I use after restore :

    Be carefull because it users systemobjects which way in not preferable !!

    use yourdb -- User-db

    go

    print 'print @@servername + '' / '' + db_name()'

    print 'go'

    go

    declare @username varchar(128)

    declare @Musername varchar(128)

    declare @IsNtName bit

    declare @sql_stmt varchar(500)

    --cursor returns with names of each username to be tied to its respective

    DECLARE user_cursor CURSOR FOR

     SELECT su.name as Name, msu.name as MasterName , su.isntname

     FROM sysusers su

     left join  master.dbo.sysxlogins msu

       on upper(su.name) = upper(msu.name)

     WHERE su.sid > 0x00

     ORDER BY Name

    --for each user:

    OPEN user_cursor

    FETCH NEXT FROM user_cursor INTO @username, @Musername, @IsNtName

    WHILE @@FETCH_STATUS = 0

    BEGIN

     IF @username NOT IN ('dbo', 'list of names you want to avoid')  

     BEGIN

      if @Musername is null

        begin

          if @IsNtName = 1

       begin

      print 'if not exists (select * from master.dbo.syslogins where loginname = N''NtDomein**\'  + @username + ''')'

      print '   begin '

      print ' exec sp_grantlogin N''NtDomein**\'  + @username + ''''

      print ' exec sp_defaultdb N''NtDomein**\' + + @username + ''', N'''+ db_name() + ''''

      print '   end'

      set @sql_stmt =  '--Windows account '

     end

           else

     begin

           SELECT @sql_stmt = 'sp_change_users_login @Action = ''Auto_Fix'',@UserNamePattern = ''' + @username + ''''

     end

        end

      else

        begin

          SELECT @sql_stmt = 'sp_change_users_login @Action = ''Update_One'',@UserNamePattern = ''' + @username + ''', @LoginName = ''' + @username + ''''

        end

     

      PRINT @sql_stmt

     print 'go'

      print '--*** opgelet : exec stmt commented !!! ***'

      --EXECUTE (@sql_stmt)

     END

     FETCH NEXT FROM user_cursor INTO @username, @Musername, @IsNtName

    END --of table-cursor loop

    --clean up

    CLOSE user_cursor

    DEALLOCATE user_cursor

    Print '** end User-sync. **'

    Generate the code and execute the things you want !

    Test it before going live !

    Johan

    Learn to play, play to learn !

    Dont drive faster than your guardian angel can fly ...
    but keeping both feet on the ground wont get you anywhere :w00t:

    - How to post Performance Problems
    - How to post data/code to get the best help[/url]

    - How to prevent a sore throat after hours of presenting ppt

    press F1 for solution, press shift+F1 for urgent solution 😀

    Need a bit of Powershell? How about this

    Who am I ? Sometimes this is me but most of the time this is me

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

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