나는 업그레이드하기 전에 데이터베이스에서 데이터를 백업하는 데 사용하는 SQL Server 저장 프로 시저를 가지고 있으며 매개 변수로 데이터베이스 이름을 전달하여 여러 데이터베이스에서 저장 프로 시저를 실행할 수 있기를 정말로 원합니다. . 이 작업을 수행하는 쉬운 방법이 있습니까? 내가 생각할 수있는 최선의 방법은 동적으로 SQL을 스토어드 프로 시저에 구현하는 것입니다.하지만 그렇게하는 것은 잘못된 방법입니다.다른 데이터베이스에서 SQL 쿼리를 어떻게 동적으로 실행합니까?
답변
이 작업을 수행하는 다른 방법이 없습니다. 동적 SQL이 유일한 방법입니다. 당신은 DB 이름을 통해 엄격한 통제를 가지고 누가 그것을 실행중인 경우, 당신은 모든 것을 함께 절단 괜찮아,하지만이 있는지 의심 사용 QUOTENAME 안전하게 매개 변수를 탈출 : 아무것도가 있다면, 분명히
CREATE PROCEDURE doStuff
@dbName NVARCHAR(50)
AS
DECLARE @sql NVARCHAR(1000)
SET @sql = 'SELECT stuff FROM ' + QUOTENAME(@dbName) + '..TableName WHERE stuff = otherstuff'
EXEC sp_ExecuteSQL (@sql)
을 이 후 안전과를 통해 동적 SQL에 대한 매개 변수가 전달되어 있는지 확인합니다
CREATE PROCEDURE doStuff
@dbName NVARCHAR(50)
@someValue NVARCHAR(10)
AS
DECLARE @sql NVARCHAR(1000)
SET @sql = 'SELECT stuff FROM ' + QUOTENAME(@dbName) + '..TableName WHERE stuff = @pOtherStuff'
EXEC sp_ExecuteSQL (@sql, '@pOtherStuff NVARCHAR(10)', @someValue)
: 더 다음 예를 들어, 다른 입력을 다시 한 번 확인하고, 잠재적으로 매개 변수화 동적 SQL을 사용하는 것이 좋습니다를 통해 전달되는 주사 공격에 대한 기회가 줄어 듭니다. 또한 쿼리와 관련된 실행 계획이 재사용 될 가능성을 높입니다.
개인적으로는 배치 파일과 셸을 sqlcmd와 같이 사용합니다. 그렇지 않으면 저장된 proc 디렉토리에 sql을 빌드하는 것이 좋습니다. 왜 그렇게하는 것이 "잘못"될지 확신하지 못합니다.
안부, 돈
MSSQL에는 OPENQUERY (dbname, statement) 함수가 있습니다. 서버가 연결된 경우 첫 번째 매개 변수로 지정하고 해당 서버에 대해 명령문을 실행합니다.
동적 프로 시저에서이 openquery 문을 생성 할 수 있습니다. 각 서버에서 백업 proc을 실행하거나 명령문을 직접 실행할 수 있습니다.
SSIS를 사용합니까? 그렇다면 몇 가지 ssis 패키지를 만들고 그 패키지를 예약하거나 원격으로 실행해볼 수 있습니다.
무엇이든 현재 데이터베이스를 백업하는 절차를 작성하십시오. 백업하려는 모든 데이터베이스에이 절차를 설치하십시오.
백업을 시작할 다른 절차를 작성하십시오. 이것은 언급하지 않은 것에 달려 있습니다. 예를 들어, 백업 할 각 데이터베이스의 이름이 들어있는 테이블 또는 이와 유사한 테이블이있는 경우와 같습니다. 기본적으로 당신이 할 필요가 데이터베이스 이름 돌이이며, 같은 캐릭터 라인을 구축 : 바로 다음
SET @ProcessQueryString=
'EXEC '+DatabaseServer+'.'+DatabaseName+'.dbo.'+'BackupProcedureName param1, param2'
과 :
EXEC (@ProcessQueryString)
가 원격으로 실행합니다.
- 1. MongoDB에서이 쿼리를 어떻게 실행합니까?
- 2. IQueryable은 언제 쿼리를 실행합니까?
- 3. Visual Studio에서 임의의 SQLite 쿼리를 어떻게 실행합니까?
- 4. Rails에서 DB 연결시 쿼리를 어떻게 실행합니까?
- 5. VC++에서이 WMI 쿼리를 어떻게 실행합니까?
- 6. QTcpSocket을 다른 스레드에서 어떻게 실행합니까?
- 7. SQL 쿼리를 어떻게 리팩터링합니까?
- 8. 다른 데이터베이스에서 동일한 쿼리를 실행 중
- 9. 어떻게하면 Joomla 구성 요소의 레이아웃 내부에서 SQL 쿼리를 실행합니까
- 10. SSMS에서 .SQL 파일 집합을 어떻게 실행합니까?
- 11. Java 애플리케이션에서 oracle sql 쿼리를 동적으로 빌드하십시오.
- 12. 쿼리 개체가 쿼리를 단독으로 실행합니까?
- 13. SQL 쿼리를 동적으로 업데이트하는 방법 - jquery
- 14. 동적으로 다중 SQL 쿼리를 추가하는 방법은 무엇입니까?
- 15. jquery를 사용하여 sql 쿼리를 동적으로 만들려고 시도합니다.
- 16. C# asp.net viewstate에서 동적으로 SQL 쿼리를 빌드하십시오.
- 17. mysql에서 동적으로 SQL 삽입 쿼리를 생성하는 방법
- 18. 이 SQL 쿼리를 어떻게 수행합니까?
- 19. 시계열 데이터에서 "5 일 이내"와 같은 쿼리를 어떻게 실행합니까?
- 20. string.format() 메서드에 다른 문자열을 어떻게 동적으로 추가합니까?
- 21. Linq-to-SQL은 언제 쿼리를 실행합니까?
- 22. PHP 클래스를 사용하여 이처럼 mysql 쿼리를 실행합니까?
- 23. SQL Server 2008 데이터베이스에서 SQL XML의 XML을 쿼리하는 방법
- 24. 명령 줄에서 mysql을 통해 단일 쿼리를 어떻게 실행합니까?
- 25. 어떻게 (출력 시간 차이를 쿼리를 만들 필요가 내 데이터베이스에서
- 26. SQL Server 2000에서 매우 긴 동적 SQL 문을 어떻게 실행합니까?
- 27. 동적으로 쿼리를 변경하십시오 - php, jquery
- 28. bash 스크립트에서 SQL을 어떻게 실행합니까?
- 29. ASP 페이지에서 sqlcmd.exe를 어떻게 실행합니까?
- 30. Access 데이터베이스에서 Access 쿼리를 통해 SQL Server로 가져올 때의 문제