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

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

作者: 老中医167788 | 来源:发表于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