C# 更新SQL Server数据库备注信息从另一数据库
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Diagnostics; namespace SyncDatabaseColumnDescription
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
var ssb = new SqlConnectionStringBuilder();
ssb.DataSource = @".\SQL2008";
ssb.UserID = "sa";
ssb.Password = "firstelite";
ssb.InitialCatalog = "OMSDB";
using (var connection = new SqlConnection(ssb.ConnectionString))
{
connection.Open();
var tableList = GetTableList(connection); foreach (var table in tableList)
{ var fieldList = GetFieldList(connection, table);
foreach (var field in fieldList)
{
var desc = GetFieldDescription(connection, table, field);
if (desc != null)
Debug.Print(table + " -> " + field + ":" + desc);
}
}
}
} private void UpdateFieldDescription()
{
var ssb = new SqlConnectionStringBuilder();
ssb.DataSource = @".\SQL2008";
ssb.UserID = "**";
ssb.Password = "****";
ssb.InitialCatalog = "OMSDB_WITH_MEMO";
using (var connection = new SqlConnection(ssb.ConnectionString))
{
connection.Open();
var tableList = GetTableList(connection); ssb.InitialCatalog = "OMSDB";
using (var connection2 = new SqlConnection(ssb.ConnectionString))
{
connection2.Open(); var tableList2 = GetTableList(connection2); foreach (var table in tableList)
{
if (!tableList2.Any(t => t == table))
continue; var fieldList = GetFieldList(connection, table);
var fieldList2 = GetFieldList(connection2, table); foreach (var field in fieldList)
{
if (!fieldList2.Any(f => f == field))
continue; var desc = GetFieldDescription(connection, table, field);
if (string.IsNullOrWhiteSpace(desc))
continue; var desc2 = GetFieldDescription(connection2, table, field);
if (desc2 != null)
UpdateFieldDescription(connection2, table, field, desc);
else
AddFieldDescription(connection2, table, field, desc);
}
} }
}
} private List<string> GetTableList(SqlConnection connection)
{
var tableList = new List<string>();
using (var cmd = new SqlCommand(@"
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME", connection))
{
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
tableList.Add(reader[].ToString());
}
}
}
return tableList;
} private List<string> GetFieldList(SqlConnection connection, string tableName)
{
var fieldList = new List<string>();
using (var cmd = new SqlCommand("SELECT * FROM [" + tableName + "] WHERE 1=2", connection))
{
using (var reader = cmd.ExecuteReader())
{
for (var i = ; i < reader.FieldCount; i++)
fieldList.Add(reader.GetName(i));
}
}
return fieldList;
} private string GetFieldDescription(SqlConnection connection, string tableName, string fieldName)
{
using (var cmd = new SqlCommand(@"SELECT g.[value]
FROM dbo.syscolumns A
INNER JOIN dbo.sysobjects D
ON A.id = D.id
AND D.xtype = 'U'
AND D.name <> 'dtproperties'
INNER JOIN sys.extended_properties G
ON A.id = G.major_id
AND A.colid = G.minor_id
WHERE D.name = '" + tableName + @"'
AND A.name='" + fieldName + @"'", connection))
{
var ret = cmd.ExecuteScalar();
if (ret == null)
return null;
return ret.ToString();
}
} private bool AddFieldDescription(SqlConnection connection, string tableName, string filedName, string description)
{
using (var cmd = new SqlCommand(@"EXECUTE sp_addextendedproperty N'MS_Description', '" + description.Replace("'","''")
+ "', N'user', N'dbo', N'table', N'" + tableName + "', N'column', N'" + filedName + "' ", connection))
{
return cmd.ExecuteNonQuery() > ;
}
} private bool UpdateFieldDescription(SqlConnection connection, string tableName, string filedName, string description)
{
using (var cmd = new SqlCommand(@"EXECUTE sp_updateextendedproperty N'MS_Description', '" + description.Replace("'", "''")
+ "', N'user', N'dbo', N'table', N'" + tableName + "', N'column', N'" + filedName + "' ", connection))
{
return cmd.ExecuteNonQuery() > ;
}
}
}
}
C# 更新SQL Server数据库备注信息从另一数据库的更多相关文章
- SQL Server 查询表备注信息的语句
--name 字段名称--user_type_id --max_length 最大长度--is_nullable 是否允许空--remark 描述SELECT c.name, c.user_ty ...
- 解决 U2000 R017 安装报错: 检查SQL server数据库环境变量信息 ( 异常 ) [ 详细信息 ] PATH环境变量中缺少数据库路径的信息
U2000 R017 安装报错: 检查SQL server数据库环境变量信息 ( 异常 ) [ 详细信息 ] PATH环境变量中缺少数据库路径的信息 管理员模式打开注册表位置: HKEY_LOCAL_ ...
- 如何有效抓取SQL Server的BLOCKING信息
原文:如何有效抓取SQL Server的BLOCKING信息 转自:微软亚太区数据库技术支持组 官方博客 http://blogs.msdn.com/b/apgcdsd/archive/2011/12 ...
- sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
原创链接:https://www.cnblogs.com/lxf1117/p/6762315.html sql server登录名.服务器角色.数据库用户.数据库角色.架构区别联系 1.一个数据库用户 ...
- SQL Server删除表信息的三种方法
1.使用DELETE实现SQL Server删除表信息 (1)删除表中的全部信息 USE student GO DELETE student --不加where条件,删除表中的所有记录 go ...
- 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比
SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...
- 使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)
使用SQL Server 2008的事务日志传送功能备份数据库(logshiping) 使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)
- 利用SQL Server Management Studio(SSMS)复制数据库
利用SQL Server Management Studio(SSMS)复制数据库 标签(空格分隔): SQLServer 前言 今天由于客户购买的软件版本确认了,而之前进行开发的本地数据库版本较低, ...
- 监控目前所有连接SQL SERVER的用户信息
原文:监控目前所有连接SQL SERVER的用户信息 if object_id('p_getlinkinfo','P')is not null drop proc p_getlinkinfo go c ...
随机推荐
- bigdecimal 保留小数位
public class test1_format { public static void main(String[] args) { BigDecimal decimal = new BigDec ...
- C语言程序设计第5堂作业
一.本次课学习主要内容及知识结构点: 二.实验内容:(60分) 1. 求奇数和.输入一批正整数(以零或负数为结束标志),求其中的奇数和.试编写相应程序. 2. 展开式求和.输入一个实数 x,计算并输出 ...
- 字节序相关问题简单总结,LSB与MSB
细细碎碎的知识点还真是不少啊,今天总结下通信中的数据字节序的问题. 先来认识名词: MSB:Most Significant Bit. “最高有效位” LSB:Least Significant ...
- 总结:视频播放的四种实现方案(Native)
一.来自 AVFoundation的 AVPlayer对象 特点: 1. AVPlayer > 优点: 可以自定义UI, 进行控制 > 缺点: ...
- 浅谈javascript中事件冒泡与事件捕获
事件冒泡:一个事件会顺着他的层级一直往上传,一直传到document上为止,即从盒模型上看是从内到外的过程. 例: <!DOCTYPE html><html lang="e ...
- Javascript运动基础
javascript的运动非常实用,通过控制需要运动块的实际距离与要到达的距离的关系,结合定时器来控制小方块的各种运动. 运动框架 <!DOCTYPE html><html>& ...
- BZOJ 1668 馅饼里的财富
RT. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
- Destoon B2B 调优SQL后 生成首页仍然慢或不成功的原因
修改php.ini文件,查找 ;date.timezone = ,把前面的分号去掉在 “=”后面加上时区. 比如:Asia/Shanghai (上海) 自动task有上面的问题 但后台生成时这样修改后 ...
- Mysql游标阻止执行最后一次
DELIMITER $$ USE `you`$$ DROP PROCEDURE IF EXISTS `stockCursor`$$ CREATE DEFINER=`root`@`localhost` ...
- Send Push Notifications to iOS Devices using Xcode 8 and Swift 3, APNs Auth Key
Send Push Notifications to iOS Devices using Xcode 8 and Swift 3 OCT 6, 2016 Push notifications are ...