Windows 7 문제가 있는 SQL SERVER 2005

Windows 7 문제가 있는 SQL SERVER 2005

우선 다른 서버에서 데이터베이스를 복원했고 이제 모든 저장 프로시저의 이름은 [azamsharp].[usp_getlatestposts]로 지정되었습니다. 원래 서버의 사용자였기 때문에 [azamsharp] 접두어가 붙은 것 같아요.

이제 내 로컬 컴퓨터에서는 이것이 실행되지 않습니다. 모든 저장 프로시저에 [azamsharp] 접두사가 붙는 것을 원하지 않습니다.

또한 Sproc을 마우스 오른쪽 버튼으로 클릭하면 속성 옵션도 볼 수 없습니다. Windows 7에서 SQL SERVER 2005를 실행하고 있습니다.

업데이트:

이상한 점은 내 컴퓨터에서 프로덕션 데이터베이스에 액세스하면 속성 옵션을 볼 수 있다는 것입니다. 따라서 Windows 7 보안에는 실제로 문제가 있습니다.

업데이트 2:

고아 사용자 저장 프로시저를 실행했을 때 두 명의 사용자 "azamsharp"와 "dbo1"이 표시되었습니다. "azamsharp" 사용자를 수정했지만 "dbo1"은 수정되지 않습니다. 다음 스크립트를 실행할 때:

exec sp_change_users_login 'update_one', 'dbo1', 'dbo1' 다음 오류가 발생합니다.

메시지 15291, 수준 16, 상태 1, 프로시저 sp_change_users_login, 131행 이 프로시저를 종료합니다. 로그인 이름 'dbo1'이 없거나 잘못되었습니다.

답변1

아마도 고아 사용자가 있을 것입니다. 컴퓨터에서 서버에 액세스할 때 도메인 자격 증명은 프로덕션 서버에 대해 DBadmin으로 액세스할 수 있습니다. 고아 사용자를 감지하려면 다음 코드를 실행하세요.

Use TestDB
sp_change_users_login 'report'

출력에는 TestDB 데이터베이스의 sysusers 시스템 테이블 항목과 master 데이터베이스의 sysxlogins 시스템 테이블 항목이 일치하지 않는 모든 로그인이 나열됩니다. 문제를 해결하려면:

고아 사용자 해결

Use TestDB
sp_change_users_login 'update_one', 'test', 'test' 

SELECT sid FROM dbo.sysusers WHERE name = 'test'
0x40FF09E48FBD3354B7833706FD2C61E4

use master
SELECT sid FROM dbo.sysxlogins WHERE name = 'test'
0x40FF09E48FBD3354B7833706FD2C61E4

그러면 서버 로그인 "test"가 TestDB 데이터베이스 사용자 "test"와 다시 연결됩니다. sp_change_users_login 저장 프로시저는 "auto_fix" 매개 변수를 사용하여 모든 분리된 사용자의 업데이트를 수행할 수도 있지만 SQL Server에서는 로그인과 사용자를 이름별로 일치시키려고 하기 때문에 권장되지 않습니다. 대부분의 경우 이는 작동합니다. 그러나 잘못된 로그인이 사용자와 연결되어 있으면 사용자가 잘못된 권한을 가질 수 있습니다.

관련 정보