2011-03-07 5 views
14

안녕하세요, 일부 SQL과 C# 상호 작용에 문제가 있습니다. DB와 로그인을 설치 프로그램의 스크립트에서 작성하면 실제 클라이언트 프로그램이 로그인해야하지만 클라이언트 프로그램을 실행할 때마다 폭탄이 나고 로그 파일에이 오류가 발생합니다. (btw : 클라이언트 프로그램이 다른 컴퓨터의 기존 DB에서 작동 함)사용자 X에 대한 sql 로그인이 실패했습니다 ... windows 인증 만

'user'사용자가 sql 로그인에 실패했습니다. 이유 : SQL 인증을 사용하여 로그인하려는 시도가 실패했습니다. 서버는 Windows 인증 용으로 만 구성됩니다. [클라이언트 :] 오류 18456, 심각도 : 14 주 : (58)이이 로그인/사용자를 생성하는 데 사용되는 명령 ...

CREATE LOGIN [user] WITH PASSWORD='pass', DEFAULT_DATABASE=[data], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
EXEC sys.sp_addsrvrolemember @loginame = N'user', @rolename = N'sysadmin' 
EXEC sys.sp_addsrvrolemember @loginame = N'user', @rolename = N'serveradmin' 
USE [data] CREATE USER [user] FOR LOGIN [user] WITH DEFAULT_SCHEMA=[dbo] 

내가 무엇을 놓치고있다

?
도움에 감사드립니다!

+0

사용자 앞에 도메인을 추가 해 보았습니까? 예 :'myDomain \ user' –

답변

31

SQL Server 인스턴스가 Windows 인증 만 지원하도록 설정되어 있습니다. 사용자 작성 스크립트가 SQL 사용자 계정을 작성하려고 시도하는데 데이터베이스 인스턴스가 Windows 인증 만 지원하기 때문에 실패합니다.

데이터베이스가 사용자 작성 명령문을 지원할 수있게하려면 SSMS를여십시오. 서버를 마우스 오른쪽 단추로 클릭하고 등록 정보를 클릭하십시오. 보안 탭으로 이동하여 서버 인증을 Windows 인증 모드에서 SQL Server 및 Windows 인증 모드로 변경하십시오.

일단 완료되면 스크립트가 제대로 작동해야합니다.

+0

실제로, 생성 할 때 실패하지는 않을 것입니다. 서버 속성의 변경은 효과가 있었지만이를 수행하는 스크립트는 무엇입니까? 나는이 모든 작업을 수행하기 위해 모든 클라이언트 컴퓨터에 SSMS를 설치하지 않을 것입니다. –

+0

Windows에서 혼합 모드로의 보안 변경은 한 번 변경되었습니다. 한 번 완료되면 모든 클라이언트 컴퓨터에 SSMS를 설치하는 것에 대해 걱정할 필요가 없습니다. 필자가 알고있는 바로는 SQL Server를 설치할 때 지정해야하거나 SSMS에서 재정의 할 수있는 것입니다 (http://stackoverflow.com/questions/1393654/how-to-change-from-sql-server). 자세한 내용은 -windows-mode-to-mixed-modesql-server-2008을 참조하십시오. –

+0

프로그램은 내 전제 조건의 한 번의 클릭으로 SQL Server 2008 익스프레스 에디션을 설치하는 Microsoft의 통합 게시 서비스를 사용합니다. DB 서버를 설치할 때 EULA에 동의하는 것만을 요구합니다. 정말 내 옵션을 SSMS를 설치하거나 수동으로 MSSQL '08 SQL Server 및 Windows 인증 모드로 변경하려면 익스프레스 설치 제한되어 있습니까? ... 아니면 방금 레지스트리에서 할 수있는 방법을 찾았습니다 ... 정말 그렇게 할 쿼리를 작성하고 싶습니다 ... –

관련 문제