MS-SQL Server同时更新一张表中多个字段的值

兵工厂三剑客 2016-01-19 06:08:40
表格字段如图,图中只是展示了部分数据

图片中可以看出被修改MAC数据是在哪个字段,但是实际操作是并不知道在哪个字段(即不知道是在MAC1还是在MAC2)。
现在我想实现以下操作:
把“00231FABCAB1”修改为“00231FABCAB2”
把“00231FABCAB3”修改为“00231FABCAB4”
把“00231FABCAB5”修改为“00231FABCAB6”
把“00231FABCAB7”修改为“00231FABCAB8”
。。。
。。。
。。。
请问用SQL语句怎么实现,而且执行的速率也比较快,性能好。因为数据库每天都会有几千条的数据被存进去,目前已经有近百万条数据了。
我用了下面的语句:
update MAC2SN set MAC1=case MAC1
when '00231F70EA30' then '00231F'
when '00231F70EA32' then '00231FABF'
end,
MAC2=case MAC2
when '00231F70EA30' then '00231FABD'
when '00231F70EA32' then '00231FABF'
end
where MAC1 in ('00231F70EA30','00231F70EA32') or MAC2 in ('00231F70EA30','00231F70EA32')
发现当MAC1被更新后,其对应的MAC2则成了NULL。如下图

请教下大家,该怎么弄。我对SQL语句不熟练,只会简单的,折腾我一下午了。
...全文
507 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
兵工厂三剑客 2016-01-21
  • 打赏
  • 举报
回复
引用 14 楼 xdashewan 的回复:
update MAC2SN
set MAC1 = case MAC1 when ‘00231F70EA46’ then ‘00231F70E70E’ else MAC1 end,
      MAC2 = case MAC2 when ‘00231F70EA46’ then ‘00231F70E70E’ else MAC2 end
感谢。
兵工厂三剑客 2016-01-21
  • 打赏
  • 举报
回复
我把我最后的代码贴出来:

public void ExecuteMACSTransaction(string[] oldvalues, string[] newvalues, DataBaseSelected dbs, string ip)
        {
            string connectionString = "Data Source=" + ip + ";Persist Security Info=True;Initial Catalog=MACSN数据管理;User ID=sa;Password=sql";
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                SqlCommand command = connection.CreateCommand();
                SqlTransaction transaction;

                // Start a local transaction.
                transaction = connection.BeginTransaction("SampleTransaction");

                // Must assign both transaction object and connection
                // to Command object for a pending local transaction
                command.Connection = connection;
                command.Transaction = transaction;
                try
                {
                    int count = oldvalues.Length;
                    switch (dbs)
                    {
                        case DataBaseSelected.MAC1SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC='{0}' where MAC='{1}'",newvalues[i],oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC2SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end where MAC1='{4}' or MAC2='{5}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC3SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end,MAC3=case MAC3 when '{4}' then '{5}' else MAC3 end where MAC1='{6}' or MAC2='{7}' or MAC3='{8}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery(); 
                            }
                            break;
                        case DataBaseSelected.MAC4SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end,MAC3=case MAC3 when '{4}' then '{5}' else MAC3 end,MAC4=case MAC4 when '{6}' then '{7}'else MAC4 end where MAC1='{8}' or MAC2='{9}' or MAC3='{10}' or MAC4='{11}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery(); 
                            }
                            break;
                        case DataBaseSelected.MAC21SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC='{0}' where MAC='{1}'", newvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC22SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end where MAC1='{4}' or MAC2='{5}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC23SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end,MAC3=case MAC3 when '{4}' then '{5}' else MAC3 end where MAC1='{6}' or MAC2='{7}' or MAC3='{8}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC24SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end,MAC3=case MAC3 when '{4}' then '{5}' else MAC3 end,MAC4=case MAC4 when '{6}' then '{7}'else MAC4 end where MAC1='{8}' or MAC2='{9}' or MAC3='{10}' or MAC4='{11}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC31SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC='{0}' where MAC='{1}'", newvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC32SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end where MAC1='{4}' or MAC2='{5}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC33SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end,MAC3=case MAC3 when '{4}' then '{5}' else MAC3 end where MAC1='{6}' or MAC2='{7}' or MAC3='{8}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        case DataBaseSelected.MAC34SN:
                            for (int i = 0; i < count; i++)
                            {
                                command.CommandText = string.Format("update " + dbs.ToString() + " set MAC1=case MAC1 when '{0}' then '{1}' else MAC1 end,MAC2=case MAC2 when '{2}' then '{3}' else MAC2 end,MAC3=case MAC3 when '{4}' then '{5}' else MAC3 end,MAC4=case MAC4 when '{6}' then '{7}'else MAC4 end where MAC1='{8}' or MAC2='{9}' or MAC3='{10}' or MAC4='{11}'", oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], newvalues[i], oldvalues[i], oldvalues[i], oldvalues[i], oldvalues[i]);
                                command.ExecuteNonQuery();
                            }
                            break;
                        default:
                            break;
                    }
                    
                    transaction.Commit();
                    connection.Close();
                    connection.Dispose();
                }
                catch (Exception ex)
                {
                    connection.Close();
                    connection.Dispose();
                    DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message,"提示");
                }

            }
        }
兵工厂三剑客 2016-01-21
  • 打赏
  • 举报
回复
引用 15 楼 wtujedp 的回复:
[quote=引用 13 楼 SCGH_Fx 的回复:] [quote=引用 9 楼 wtujedp 的回复:] [quote=引用 4 楼 SCGH_Fx 的回复:] [quote=引用 2 楼 wtujedp 的回复:] 两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
但是t2(原MAC与新MAC对应的表)并不在数据库当中,只是一个对应关系,操作是在客户端完成。按照你的思路,是不是需要建个t2临时表。如果建个临时表,对于大批量修改有必要。但是如果小批量修改,比如只修改一两条数据又显得麻烦。[/quote] 我一开始是以为你只是批量更新一次的。 现在你的意思是在程序里面每次都要更新,那你只要你循环T2对应表,一个个去更新就行了。[/quote] 我想再请教一下一个Update语句怎么写。我想更新表“MAC2SN”的某个MAC值,原MAC为“00231F70EA46”,需要更新成“00231F70E70E”,事先不知道是在哪个字段,这该怎么写呢,谢谢了。我帖子中用的SQL语句有错误。 我打算采用循环一条一条更新。[/quote] 你这边是不是只有两个MAC1和MAC2两个字段,你不知道这一次更新的是哪一个字段, 如果你MAC1更新了,则必须去对应的
引用 13 楼 SCGH_Fx 的回复:
[quote=引用 9 楼 wtujedp 的回复:] [quote=引用 4 楼 SCGH_Fx 的回复:] [quote=引用 2 楼 wtujedp 的回复:] 两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
但是t2(原MAC与新MAC对应的表)并不在数据库当中,只是一个对应关系,操作是在客户端完成。按照你的思路,是不是需要建个t2临时表。如果建个临时表,对于大批量修改有必要。但是如果小批量修改,比如只修改一两条数据又显得麻烦。[/quote] 我一开始是以为你只是批量更新一次的。 现在你的意思是在程序里面每次都要更新,那你只要你循环T2对应表,一个个去更新就行了。[/quote] 我想再请教一下一个Update语句怎么写。我想更新表“MAC2SN”的某个MAC值,原MAC为“00231F70EA46”,需要更新成“00231F70E70E”,事先不知道是在哪个字段,这该怎么写呢,谢谢了。我帖子中用的SQL语句有错误。 我打算采用循环一条一条更新。[/quote] update MAC2SN set mac1='00231F70E70E' where mac1='00231F70EA46' update MAC2SN set mac2='00231F70E70E' where mac2='00231F70EA46' [/quote] 感谢,14楼的语句更方便一点。
兵工厂三剑客 2016-01-20
  • 打赏
  • 举报
回复
引用 9 楼 wtujedp 的回复:
[quote=引用 4 楼 SCGH_Fx 的回复:] [quote=引用 2 楼 wtujedp 的回复:] 两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
但是t2(原MAC与新MAC对应的表)并不在数据库当中,只是一个对应关系,操作是在客户端完成。按照你的思路,是不是需要建个t2临时表。如果建个临时表,对于大批量修改有必要。但是如果小批量修改,比如只修改一两条数据又显得麻烦。[/quote] 我一开始是以为你只是批量更新一次的。 现在你的意思是在程序里面每次都要更新,那你只要你循环T2对应表,一个个去更新就行了。[/quote] 我想再请教一下一个Update语句怎么写。我想更新表“MAC2SN”的某个MAC值,原MAC为“00231F70EA46”,需要更新成“00231F70E70E”,事先不知道是在哪个字段,这该怎么写呢,谢谢了。我帖子中用的SQL语句有错误。 我打算采用循环一条一条更新。
兵工厂三剑客 2016-01-20
  • 打赏
  • 举报
回复
引用 11 楼 xdashewan 的回复:
[quote=引用 10 楼 SCGH_Fx 的回复:] 我忘了说了,操作是在客户端完成的。 大批量的操作不是经常有,操作频率较高的是小批量(几条,10来条)的。这样的话,用循环是不是比较合理。
数量不多用循环没什么问题,10来条没什么压力[/quote] 嗯。那我就用循环了。我想再请教一下一个Update语句怎么写。我想更新表“MAC2SN”的某个MAC值,原MAC为“00231F70EA46”,需要更新成“00231F70E70E”,事先不知道是在哪个字段,这该怎么写呢,谢谢了。我帖子中用的SQL语句有错误。
xdashewan 2016-01-20
  • 打赏
  • 举报
回复
引用 10 楼 SCGH_Fx 的回复:
我忘了说了,操作是在客户端完成的。 大批量的操作不是经常有,操作频率较高的是小批量(几条,10来条)的。这样的话,用循环是不是比较合理。
数量不多用循环没什么问题,10来条没什么压力
兵工厂三剑客 2016-01-20
  • 打赏
  • 举报
回复
引用 8 楼 xdashewan 的回复:
[quote=引用 7 楼 SCGH_Fx 的回复:] 你的意思是不是有多少条记录要更新,就执行多少次Update。我是在客户端来完成更新数据库的操作。 我看了微软的C#代码,有点想用循环来执行Update。代码我在上面贴出来了。
循环当然可以是可以,但如果数目上去可能会有性能问题。你可以建一张要更新的表,把更新条件和值插进去,然后分两句执行关联update,一句关联mac1更新mac1,另一句关联mac2更新mac2[/quote] 我忘了说了,操作是在客户端完成的。 大批量的操作不是经常有,操作频率较高的是小批量(几条,10来条)的。这样的话,用循环是不是比较合理。
xdashewan 2016-01-20
  • 打赏
  • 举报
回复
引用 7 楼 SCGH_Fx 的回复:
你的意思是不是有多少条记录要更新,就执行多少次Update。我是在客户端来完成更新数据库的操作。 我看了微软的C#代码,有点想用循环来执行Update。代码我在上面贴出来了。
循环当然可以是可以,但如果数目上去可能会有性能问题。你可以建一张要更新的表,把更新条件和值插进去,然后分两句执行关联update,一句关联mac1更新mac1,另一句关联mac2更新mac2
wtujedp 2016-01-20
  • 打赏
  • 举报
回复
引用 4 楼 SCGH_Fx 的回复:
[quote=引用 2 楼 wtujedp 的回复:] 两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
但是t2(原MAC与新MAC对应的表)并不在数据库当中,只是一个对应关系,操作是在客户端完成。按照你的思路,是不是需要建个t2临时表。如果建个临时表,对于大批量修改有必要。但是如果小批量修改,比如只修改一两条数据又显得麻烦。[/quote] 我一开始是以为你只是批量更新一次的。 现在你的意思是在程序里面每次都要更新,那你只要你循环T2对应表,一个个去更新就行了。
兵工厂三剑客 2016-01-20
  • 打赏
  • 举报
回复
引用 6 楼 xdashewan 的回复:
别用case whern,每一个update执行两句sql,一句更新mac1,另一句更新mac2
你的意思是不是有多少条记录要更新,就执行多少次Update。我是在客户端来完成更新数据库的操作。 我看了微软的C#代码,有点想用循环来执行Update。代码我在上面贴出来了。
xdashewan 2016-01-20
  • 打赏
  • 举报
回复
别用case whern,每一个update执行两句sql,一句更新mac1,另一句更新mac2
兵工厂三剑客 2016-01-20
  • 打赏
  • 举报
回复
引用 3 楼 xiaoxiangqing 的回复:
只能用case来判断吧,这样效率不会太高
就是啊。而且如果用case,大批量修改的话,那语句太长了。 我看了微软给的这段C#代码,倒是有点想用循环来完成。

using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();

        SqlCommand command = connection.CreateCommand();
        SqlTransaction transaction;

        // Start a local transaction.
        transaction = connection.BeginTransaction("SampleTransaction");

        // Must assign both transaction object and connection
        // to Command object for a pending local transaction
        command.Connection = connection;
        command.Transaction = transaction;

        try
        {
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
            command.ExecuteNonQuery();
            command.CommandText =
                "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
            command.ExecuteNonQuery();

            // Attempt to commit the transaction.
            transaction.Commit();
            Console.WriteLine("Both records are written to database.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
            Console.WriteLine("  Message: {0}", ex.Message);

            // Attempt to roll back the transaction.
            try
            {
                transaction.Rollback();
            }
            catch (Exception ex2)
            {
                // This catch block will handle any errors that may have occurred
                // on the server that would cause the rollback to fail, such as
                // a closed connection.
                Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
                Console.WriteLine("  Message: {0}", ex2.Message);
            }
        }
    }

xiaoxiangqing 2016-01-20
  • 打赏
  • 举报
回复
只能用case来判断吧,这样效率不会太高
兵工厂三剑客 2016-01-20
  • 打赏
  • 举报
回复
引用 2 楼 wtujedp 的回复:
两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
但是t2(原MAC与新MAC对应的表)并不在数据库当中,只是一个对应关系,操作是在客户端完成。按照你的思路,是不是需要建个t2临时表。如果建个临时表,对于大批量修改有必要。但是如果小批量修改,比如只修改一两条数据又显得麻烦。
wtujedp 2016-01-20
  • 打赏
  • 举报
回复
两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
wtujedp 2016-01-20
  • 打赏
  • 举报
回复
引用 13 楼 SCGH_Fx 的回复:
[quote=引用 9 楼 wtujedp 的回复:] [quote=引用 4 楼 SCGH_Fx 的回复:] [quote=引用 2 楼 wtujedp 的回复:] 两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
但是t2(原MAC与新MAC对应的表)并不在数据库当中,只是一个对应关系,操作是在客户端完成。按照你的思路,是不是需要建个t2临时表。如果建个临时表,对于大批量修改有必要。但是如果小批量修改,比如只修改一两条数据又显得麻烦。[/quote] 我一开始是以为你只是批量更新一次的。 现在你的意思是在程序里面每次都要更新,那你只要你循环T2对应表,一个个去更新就行了。[/quote] 我想再请教一下一个Update语句怎么写。我想更新表“MAC2SN”的某个MAC值,原MAC为“00231F70EA46”,需要更新成“00231F70E70E”,事先不知道是在哪个字段,这该怎么写呢,谢谢了。我帖子中用的SQL语句有错误。 我打算采用循环一条一条更新。[/quote] 你这边是不是只有两个MAC1和MAC2两个字段,你不知道这一次更新的是哪一个字段, 如果你MAC1更新了,则必须去对应的
引用 13 楼 SCGH_Fx 的回复:
[quote=引用 9 楼 wtujedp 的回复:] [quote=引用 4 楼 SCGH_Fx 的回复:] [quote=引用 2 楼 wtujedp 的回复:] 两表关联更新 update t1 set mac1=t2.mac2 from t1 inner join T2 on t1.mac1=t2.mac1 t1 是你原来的表,需要被更新。 t2 是原MAC与新MAC对应的表 两表根据mac进行关联然后进行更新。
但是t2(原MAC与新MAC对应的表)并不在数据库当中,只是一个对应关系,操作是在客户端完成。按照你的思路,是不是需要建个t2临时表。如果建个临时表,对于大批量修改有必要。但是如果小批量修改,比如只修改一两条数据又显得麻烦。[/quote] 我一开始是以为你只是批量更新一次的。 现在你的意思是在程序里面每次都要更新,那你只要你循环T2对应表,一个个去更新就行了。[/quote] 我想再请教一下一个Update语句怎么写。我想更新表“MAC2SN”的某个MAC值,原MAC为“00231F70EA46”,需要更新成“00231F70E70E”,事先不知道是在哪个字段,这该怎么写呢,谢谢了。我帖子中用的SQL语句有错误。 我打算采用循环一条一条更新。[/quote] update MAC2SN set mac1='00231F70E70E' where mac1='00231F70EA46' update MAC2SN set mac2='00231F70E70E' where mac2='00231F70EA46'
xdashewan 2016-01-20
  • 打赏
  • 举报
回复
update MAC2SN
set MAC1 = case MAC1 when ‘00231F70EA46’ then ‘00231F70E70E’ else MAC1 end,
      MAC2 = case MAC2 when ‘00231F70EA46’ then ‘00231F70E70E’ else MAC2 end
兵工厂三剑客 2016-01-19
  • 打赏
  • 举报
回复
还有就是我想实现大批量(成百上千条)的更新。只给出原MAC值与其更新后的MAC值,举个例子: 把“00231FABCAB1”修改为“00231FABCAB2” 把“00231FABCAB3”修改为“00231FABCAB4” 把“00231FABCAB5”修改为“00231FABCAB6” 把“00231FABCAB7”修改为“00231FABCAB8” 。。。(这里还有很多) 这样的话又该怎么弄比较好呢。
本课程根据讲师十多年在世界500强外企的生产环境中的SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程中不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货分享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境中实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境中,不介绍非域环境和标准版的SQL Server高可用性组,这的配置在企业中较罕见,没有实践意义,不浪费学员时间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验中SQL Server均已加域,直入主题,节省大量时间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL ServerSQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员均可下载。     

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧