DAC--使用DAC来导出数据库脚本
//==============================================
//功能介绍:使用DAC来导出数据库脚本
//注意事项:
//1.本程序涉及到的DLL有:
// --Microsoft.SqlServer.ConnectionInfo.dll
// --Microsoft.SqlServer.Management.Dac.dll
// --Microsoft.SqlServer.Management.Sdk.Sfc.dll
// --Microsoft.SqlServer.Management.SmoMetadataProvider.dll
//2.以上DLL可以在C:\Windows\assembly\GAC_MSIL下找到,
//如果找不到,可以使用SQLSERVER 2012安装包安装以下MSI:
// --SQLSysClrTypes.msi
// --SharedManagementObjects.msi
// --DACFramework.msi
//
//==============================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Dac;
using Microsoft.SqlServer.Management.Smo;
using System.IO;
class DACExtracter
{
private List <string>GetDatabaseNames(SqlConnection conn)
{
SqlCommand comm = newSqlCommand( "SELECT name FROM sys.databases where database_id>4",conn);
List<string >dbNames = new List<string >();
try
{
conn.Open();
SqlDataReader reader= comm.ExecuteReader();
while(reader.Read())
{
dbNames.Add(reader["name" ].ToString());
}
return dbNames;
}
catch
{
Console.WriteLine("connect dbfailed");
throw(new Exception("connect db failed"));
}
finally
{
if(conn!=null )
{
conn.Close();
conn.Dispose();
}
}
}
public voidExtractDAC(string connectionString, string extractFolderPath)
{
try
{
SqlConnectionsqlConnection = new SqlConnection(connectionString);
ServerConnectionconn = new ServerConnection(sqlConnection);
Server destServer =new Server(conn);
List<string >dbNames = GetDatabaseNames(sqlConnection);
string version ="1.0.0.1" ;
foreach (stringdbName in dbNames)
{
ExtractDAC(destServer, dbName, version, extractFolderPath);
}
}
catch(Exception )
{
Console.WriteLine("End with error" );
}
}
private voidExtractDAC(Server destServer,string databaseName,string version,stringextractFolderPath)
{
try
{
Console.WriteLine(destServer.Information.Version);
DacExtractionUnitdacUnit = new DacExtractionUnit(destServer, databaseName, databaseName, newVersion (version));
DirectoryInfo dir =new DirectoryInfo(extractFolderPath);
if (!dir.Exists)
{
dir.Create();
}
string dacFilePath =dir.FullName + @"\" + databaseName + ".dacpac" ;
if (!File.Exists(dacFilePath))
{
File.Delete(dacFilePath);
}
dacUnit.Extract(dacFilePath);
Console.WriteLine("extract "+databaseName+"successfully");
}
catch(IOException )
{
Console.WriteLine("please check extract folder");
Console.WriteLine("extract " + databaseName + "failed" );
}
catch (Exception )
{
Console.WriteLine("extract " + databaseName + "failed" );
}
}
}
static void Main(string[] args)
{
String connectionString= "Data Source=88.88.88.88,18991;Initial Catalog=master;IntegratedSecurity=False;User ID=sa;Password=sa;";
DACExtracterdacExtracter = new DACExtracter();
dacExtracter.ExtractDAC(connectionString, @"E:\DBScript" );
Console.WriteLine("press any key to close");
Console.ReadLine();
}
DAC--使用DAC来导出数据库脚本的更多相关文章
- MySQL Workbench 导出数据库脚本(图文)
1.如下图红框所示,在Server Administration那里,点击"New Server Instance" 2.如下图所示,如果是连接本地数据库,则选localhost, ...
- PL SQLDEVELOPMENT导出数据库脚本
Tools--export Tables--选择表--SQL Inserts-- watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHprMTU2MjExMD ...
- MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)
MySql数据库导出完整版(导出数据库,导出表,导出数据库结构) 用MySqlCE导出数据库脚本时,如数据库中包含中文内容,则导出异常. 现在可以通过mysqldump.exe直接导出数据库脚本步骤如 ...
- SQL Server 2012 数据库数据导出为脚本
转自:http://blog.csdn.net/ituff/article/details/8265822 将高版本的的SQL Server数据库移到低版本的SQL Server是一件十分蛋疼的事,最 ...
- SQL Server2012如何导出sql脚本并且还原数据库
一 备份数据库 1 选择某一个数据库,右键依次选择:任务==>生成脚本: 2 选择要编写脚本的数据库对象,注意此处可以选择特定的数据库对象,我们可以选择我们需要备份的数据表. 3 在当 ...
- 使用PostgreSQL 脚本导出数据库的DDL
使用PostgreSQL 脚本导出数据库的DDL 本文主要介绍如何使用基于 PostgreSQL pgdump编写的自定义脚本来导出数据库的DDL. 一.文件说明: 1.pgdump基础语句.sql: ...
- MySQL导入sql脚本 导出数据库
导出数据库 不能停止服务 cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) mysqldump -u用户名 -p 数据库名 > 导出的文件名 ...
- python实用脚本-定时导出数据库中的数据并且发送数据到邮箱
1.发送邮件脚本 #coding=utf-8 import smtplib from email.header import Header from email.mime.text import MI ...
- DB2导入导出数据库数据
导出数据库中数据 在db2cmd命令下生成建库脚本(-z指定模式名) db2look -d BBS -z db2admin -u db2admin -e -o bbs.sql 在db2cmd命令下导出 ...
随机推荐
- Web标准:一、xhtml css基础知识
说明:这些知识是我看<十天学会DIV+CSS教程完整版 完美整理+完整代码>这篇文章后记下来的一些内容,包括少部分不懂得地方去百度到的一些解释等,该文章的地址: http://wenku. ...
- avg(xxxxxx)什么时候能独自出现?
avg(xxxxxx)是作为求一组数据的平均数,需要有这组数据的总数和个数,所以通常配合着group by来使用, 比如: SELECT ID, AVG(GRADE) AS 平均数 FROM TEST ...
- SVN 客户端的安装与配置
127.0.0.1这个IP地址代表连接本机,其实https://127.0.0.1:443/svn/Test/和https://ZhongZhenhua-PC/svn/Test/是一样的,因为我这里S ...
- hbase概念
1. 概述(扯淡~) HBase是一帮家伙看了Google发布的一片名为“BigTable”的论文以后,犹如醍醐灌顶,进而“山寨”出来的一套系统. 由此可见: 1. 几乎所有的HBase中的理念,都可 ...
- inputStream、File、Byte、String等等之间的相互转换
一:inputStream转换 1.inputStream转为byte //方法一 org.apache.commons.io.IOUtils包下的实现(建议) IOUtils.toByteArray ...
- models渲染字典&form表单上传文件&ajax上传文件
{# {% for u in teacher_d.keys %}#} {# {% for u in teacher_d.values %}#} {% for k,u in teacher_d.item ...
- 关于block元素和inline元素
呃...这个会不会太基础了.最近在复习,所以基础知识也不能够忽略. 根据HTML 4.01 规范,其描述如下(http://www.w3.org/TR/html401/struct/global.ht ...
- ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数
ROS Indigo beginner_Tutorials-08 ROS服务 和 ROS参数 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14 ...
- Adplus 抓取Crash Dump
本实例在win8.1 安装window kits https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit 1 ...
- eclipse缓存太重,新手最容易中招
有4种方法,从上到下清理: