IronPython : sp_attach_db でSQL Serverにデータベースをアタッチする

データベースファイル名のルールで修正必要。
import clr
clr.AddReferenceByPartialName('System.Data')

from System.Data import *
from System.Data.SqlClient import * 

constr='Data Source=.; Database=master; Integrated Security=true;'

import os,re

def execsql(sql):
  conn=SqlConnection(constr)
  conn.Open()
  cmd = conn.CreateCommand()
  cmd.CommandText = sql
  r = cmd.ExecuteReader()
  while r.Read():
    print r[0],r[1]
  r.Close()


def main():
  db={}
  for f in os.listdir('Database'):
    dbname=re.match('(.+)\.mdf',f)
    if None != dbname:
      d = dbname.group(1)
      if False == db.has_key(d):
        db[d] =([],[] )
      db[d][0].append(os.path.abspath('Database/'+f))
      continue
    dbname=re.match('(.*)_log\.ldf',f)
    if None != dbname:
      d=dbname.group(1)
      if False == db.has_key(d):
         db[d] = ([],[])
      db[d][1].append(os.path.abspath('Database/'+f))
      continue 
  
  for d in db:
   sql = "exec sp_attach_db @dbname =N'" + d + "'"
   c =1 
   for f in db[d][0]:
     sql = sql + ',' + "@filename"+str(c)+"= N'" + f + "' " 
     c = c+1
   for f in db[d][1]:
     sql = sql + ',' + "@filename"+str(c)+"= N'" + f + "' " 
     c = c+1
   execsql(sql)

if __name__ == '__main__':
  main()
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中