美文网首页
SQL SERVER 2008降级到2005因为字段问题不能导出

SQL SERVER 2008降级到2005因为字段问题不能导出

作者: Charles2018 | 来源:发表于2023-05-23 17:24 被阅读0次

批量修改字段

using System.Data.SqlClient;

var reader = ExecuteQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");
while(reader.Read())
{
    var tableName = reader[0].ToString();
    var tableDetailCmd = $@"SELECT
        A.name AS table_name,
        B.name AS column_name,
        C.value AS column_description
        FROM sys.tables A
        INNER JOIN sys.columns B ON B.object_id = A.object_id
        LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
        WHERE A.name = '{tableName}'SELECT
        A.name AS table_name,
        B.name AS column_name,
        C.value AS column_description
        FROM sys.tables A
        INNER JOIN sys.columns B ON B.object_id = A.object_id
        LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
        WHERE A.name = '{tableName}'";
    // 查询表结构详细信息
    var tableDetailInformation = ExecuteQuery(tableDetailCmd);
    while(tableDetailInformation.Read())
    {
        var columnName = tableDetailInformation["column_name"].ToString();
        if(!columnName?.Contains("Time") ?? true)continue;

        var modFdCmd = $@"update {tableName} set {columnName}='1999-01-01';
                        alter table {tableName} alter column {columnName} datetime null";
        // 更新所有字段名带有Time字眼的类型
        ExecuteNonQuery(modFdCmd);
    }
}

bool ExecuteNonQuery(string cmd)
{
    SqlConnection connection = new SqlConnection();
    connection.ConnectionString = "Data Source=...;Database=SuperTeamDelivery;User ID=sa;Password=admin..;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
    connection.Open();
    SqlCommand command = connection.CreateCommand();
    command.CommandText = cmd;
    var result = command.ExecuteNonQuery();
    connection.Close();
    return result > 0;
}

SqlDataReader ExecuteQuery(string cmd)
{
    SqlConnection connection = new SqlConnection();
    connection.ConnectionString = "Data Source=...;Database=SuperTeamDelivery;User ID=sa;Password=admin..;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
    connection.Open();
    SqlCommand command = connection.CreateCommand();
    command.CommandText = cmd;
    return command.ExecuteReader();
}

相关文章

网友评论

      本文标题:SQL SERVER 2008降级到2005因为字段问题不能导出

      本文链接:https://www.haomeiwen.com/subject/erixedtx.html