所以 为什么会有这种需求

迁移

有官方工具 也有第三方的

但是 无一例外 都不支持迁移字段注释

这个 可以使用 导出表结构 导入表结构处理

dbconvert_studio

同上 也是傻瓜式操作

ssma

这是个官方的

只支持 mysql

需要安装 vc 2019+ odbc_mysql

需要开启 sqlserveragent 服务

先在源表那转换表结构 再去目标表同步数据即可

mysql workbench

没研究出来怎么用

注释

想了想 还是用程序从 mysql 中读出来 再更新到 mssql 中吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
$mssql_db = DB::connection('mssql');

$local_database = config('database.connections.mariadb.database');

$local_tables = DB::connection('mariadb')
->table('information_schema.TABLES')
->where('TABLE_SCHEMA', $local_database)
->pluck('table_comment', 'table_name');

$local_columns = DB::connection('mariadb')
->table('information_schema.COLUMNS')
->select('table_name', 'column_name', 'column_comment')
->where('TABLE_SCHEMA', $local_database)
->get()
->groupBy('table_name');

foreach ($local_columns as $table_name => $table_columns) {
try {
$mssql_db->table($table_name)->exists();
} catch (\Exception) {
// $this->error("{$table_name} no exists");
continue;
}

$table_comment = $local_tables[$table_name];

$mssql_db->statement("IF ((SELECT COUNT(*) FROM ::fn_listextendedproperty('MS_Description',
'SCHEMA', 'dbo',
'TABLE', ?, NULL, NULL)) > 0)
EXEC sp_updateextendedproperty
'MS_Description', ?,
'SCHEMA', 'dbo',
'TABLE', ?
ELSE
EXEC sp_addextendedproperty
'MS_Description', ?,
'SCHEMA', 'dbo',
'TABLE', ?", [
$table_name,
$table_comment,
$table_name,
$table_comment,
$table_name,
]);

foreach ($table_columns as $column) {
$column_name = $column->column_name;

$column_comment = $column->column_comment;
$mssql_db->statement("IF ((SELECT COUNT(*) FROM ::fn_listextendedproperty('MS_Description',
'SCHEMA', 'dbo',
'TABLE', ?,
'COLUMN', ?)) > 0)
EXEC sp_updateextendedproperty
'MS_Description', ?,
'SCHEMA', 'dbo',
'TABLE', ?,
'COLUMN', ?
ELSE
EXEC sp_addextendedproperty
'MS_Description', ?,
'SCHEMA', 'dbo',
'TABLE', ?,
'COLUMN', ?", [
$table_name,
$column_name,
$column_comment,
$table_name,
$column_name,
$column_comment,
$table_name,
$column_name,
]);
}
}