2016-06-19 2 views
1

데이터베이스 그룹을 만들려고합니다 (데이터베이스 이름은 증분 순서대로 데이터베이스의 테이블에서 선택해야 함). 누구든지이 일을 어떻게 도와 줄 수 있습니까? 데이터베이스 값의 100 % 확신하지 않는 경우SQL Server 데이터베이스 그룹 생성 스크립트

DECLARE @loopcounter INT = 1, @Maxid INT = 100, @zid nvarchar(100)  

WHILE(@LoopCounter <= @Maxid) 
BEGIN 
    SELECT @zid = zids 
    FROM dbo.list_zid WHERE id = @LoopCounter 

    SET @LoopCounter = @LoopCounter + 1 

    print @zid 
    end 

DECLARE @DBNAME VARCHAR(50) 
SET @DBNAME = '@zid' 

CREATE DATABASE @DBNAME 
GO 
ALTER DATABASE @DBNAME SET COMPATIBILITY_LEVEL = 90 
GO 
ALTER DATABASE @DBNAME SET RECOVERY SIMPLE 
GO 

답변

0

그래서 먼저 보안 문제의 모든 종류의를 열어 당신을 떠날 수있는 테이블에서 텍스트를 동적 SQL을 사용해야합니다 경고 때문에이 작업을 수행하지 마십시오 !!!! 다음으로는 그 요점이 있지만 실행할 변수에 변수를 전달할 수는 없습니다. 문자열을 작성한 다음 문자열을 실행해야합니다. 이를 수행하는 방법과 방법에 대한 예제는 예제를 참조하십시오. 나는이 기술을 아직하지 말아야한다는 것을 모르는 경우 더 잘 이해할 수있는 것처럼 보이는 것으로 보이는 것을 DBName을 테이블에서 가져 오는 방법을 보여주지 않았다!

DECLARE @loopcounter INT = 1, @Maxid INT = 100, @zid nvarchar(100)  

    WHILE(@LoopCounter <= @Maxid) 
    BEGIN 
     DECLARE @DBNAME VARCHAR(50) 
     SET @DBNAME = '@zid' 

     SELECT @zid = zids 
     FROM dbo.list_zid WHERE id = @LoopCounter 
     --if you are getting the @zid out of the database I would assume you can also get the name on this query too???? 



     DECLARE @SQLStatements NVARCHAR(MAX) 
     SET @SQLStatements = ' 
    CREATE DATABASE ' + @DBNAME + ' 
    GO 
    ALTER DATABASE ' + @DBNAME + ' SET COMPATIBILITY_LEVEL = 90 
    GO 
    ALTER DATABASE ' + @DBNAME + ' SET RECOVERY SIMPLE 
    GO' 

     EXECUTE (@SQL) 


     SET @LoopCounter = @LoopCounter + 1 
      print @zid 
    END 
관련 문제