SQL Server 2005에는 두 개의 데이터베이스가 있습니다. 하나는 "A"이고 다른 하나는 "A_2"입니다. "A"는 사용자가 입력하는 변수 이름이고 두 번째 데이터베이스의 "_2"접두사는 항상 알려져 있습니다. (따라서 데이터베이스는 "MyDB"와 "MyDB_2"등이 될 수 있습니다.
실제 이름을 모르고 'exec'문을 사용하지 않고 저장 프로 시저 내에서 다른 데이터베이스에 액세스하는 방법은 무엇입니까?SQL Server에서 동적 이름을 사용하여 다른 데이터베이스에 액세스
4
A
답변
7
동의어라고하는 새 SQL Server 2005 기능을 사용해 볼 수 있습니다.
CREATE SYNONYM이 필요하고 동의어를 사용하여 저장 프로 시저를 컴파일하고 저장하십시오. 이렇게하면 나중에 동의어를 "즉시"변경할 수 있습니다. 분명히 CREATE SYNONYM 코드를 동적 SQL로 실행해야 할 필요가 있습니다.
CREATE SYNONYM을 실행하려면 사용자에게 해당 권한이 부여되어야하며 그렇지 않으면 ALTER SCHEMA 권한이 있어야합니다. 해당 경로로 이동하기 전에 동의어에 대해 더 자세히 읽으십시오. 몇 개의 문자열이 첨부되어 있습니다.
0
나는 그것이 가능하다고 생각하지 않는다.
이름은 변수이며 데이터베이스 이름으로 변수를 사용할 수 없습니다.
그래서 유일한 방법은 전체 명령을 문자열에 놓고 실행하지 말고 피하는 것입니다.
전체적인 목적은 무엇입니까? 로직에서 데이터베이스의 이름을 지정하지만 로직과 사용자가 입력 한 이름 사이에 링크를 저장하면 어떨까요?
0
내가 수행 한 작업은 액세스하려는 각 테이블 (아마도 스키마는 동일합니다)에 대한보기를 만든 다음 내 후속 코드에서 방금보기를 참조했습니다. 설치하기 전에 데이터베이스 스크립트의 최종 값으로 데이터베이스 이름을 대체 할 소프트웨어의 조각을 작성 예를
if object_id('view_Table1') is not null
drop view view_Table1
dim @cmd nvarchar(max)
set @cmd = 'create view view_Table1 as select * from ' + @DbName + '.dbo.Table1'
exec sp_executesql @cmd
select WhateverColumn from view_Table1
관련 문제
- 1. SQL Server에서 다른 테이블의 열 이름을 사용하여 행을 비교하는 방법
- 2. 사용자가 SQL Server에서 데이터베이스에 액세스 할 수있는 Windows 그룹 찾기?
- 3. SQL Server에서 다른 캐스팅을 사용하여 사례 선택
- 4. ASP에서 SQL 데이터베이스에 액세스
- 5. 내 SQL Server에서 내 데이터베이스에 사용자 설정
- 6. SQL Server에서 별칭 이름을 설정하는 방법
- 7. SQL Server에서 인스턴스 이름을 변경하는 방법
- 8. 레일 - 다른 데이터베이스에 액세스 하시겠습니까?
- 9. 다른 데이터베이스에 SQL 테이블
- 10. Android에서 SQL 데이터베이스에 액세스 하시겠습니까?
- 11. 원격 SQL Server 데이터베이스에 액세스
- 12. 다른 SQL Server에서 테이블을 업데이트하는 방법
- 13. 응용 프로그램에서 다른 데이터베이스에 액세스
- 14. 다른 페이지에서 동적 콘텐츠에 액세스
- 15. SQL Server에서 sp_getapplock을 사용하여 얻은 다른 사용자의 잠금 해제
- 16. PHP를 사용하여 MySQL 데이터베이스에 액세스
- 17. 사용자 함수 내의 다른 데이터베이스의 테이블에 대한 동적 액세스
- 18. 다른 언어를 저장할 때 SQL Server에서 텍스트를 검색하는 방법
- 19. TSQL을 사용하여 SQL Server에서 데이터베이스의 스키마를 지우시겠습니까?
- 20. 동적 SQL
- 21. SQL Server에서 메일 보내기?
- 22. SQL Server에서 트랜잭션 잠금
- 23. 다른 도메인의 SQL Server에서 MySQL 데이터베이스를 업데이트하십시오.
- 24. SQL Server에서 동적으로 생성 된 데이터베이스에 대한 엔터티 만들기
- 25. Cocoa 응용 프로그램에서 SQL 데이터베이스에 액세스
- 26. SQL 2005 데이터베이스에 액세스 할 수 없습니다.
- 27. SQL Server에서 감사 로그를 구현하는 방법
- 28. SQL Server에서 문자열 비교!
- 29. SQL Server 쿼리를 사용하는 동적 액세스 차트
- 30. 동적 이름을 사용하여 양식 객체 주소 지정
이 힌트를 주셔서 대단히 감사합니다. 아직 테스트하지는 않았지만 매우 흥미로운 것 같습니다! – Marc
그래서 나는 이것을 테스트했고 우리의 문제를 완벽하게 해결합니다. 설치하는 동안 한 번 정의 할 다른 데이터베이스의 각 테이블에 대해 동의어를 정의합니다. 최종 사용자가 너무 많은 권한을 갖지 않으므로이 방법으로 안전해야합니다. – Marc