【问题标题】:MySql to Sql Server migration questionsMySql 到 Sql Server 迁移问题
【发布时间】:2010-08-18 22:55:44
【问题描述】:

我使用迁移工具成功从 MySql 迁移到 Sql Server。

不幸的是,由于某种原因,它标记了表格database.DBO.tablename 而不仅仅是database.tablename

我从未使用过 Sql Server,所以也许这只是他们命名表的方式。

当我这样做时:

SELECT TOP 1000 [rid]
      ,[filename]
      ,[qcname]
      ,[compound]
      ,[response]
      ,[isid]
      ,[isidresp]
      ,[finalconc]
      ,[rowid]
  FROM [test].[calibration]

没用

但是,当我这样做时:

SELECT TOP 1000 [rid]
      ,[filename]
      ,[qcname]
      ,[compound]
      ,[response]
      ,[isid]
      ,[isidresp]
      ,[finalconc]
      ,[rowid]
  FROM [test].[dbo].[calibration]

它有效。

有谁知道它为什么以 DBO 为前缀?

【问题讨论】:

    标签: sql mysql sql-server


    【解决方案1】:

    dbo 是您创建的任何东西(表、存储过程等)的标准 database owner,因此迁移工具会自动为其添加前缀。

    当您访问 Sql Server 中的某些内容时,例如名为 calibration 的表,以下内容在功能上是等效的:

    • calibration
    • dbo.calibration
    • database_name.dbo.calibration
    • server_name.database_name.dbo.calibration

    据我所知,MySql 不支持(大约 12 个月前,我们使用 nant 执行的自定义脚本将解决方案从 MySql 迁移到 SqlServer)在引用对象时支持数据库所有者,因此您可能不熟悉四个部分(server_name.database_name.owner_name.object_name) 参考。

    基本上,如果要指定要访问的数据库,还需要指定对象的“所有者”。即,以下功能相同:

    USE [master]
    GO
    SELECT * FROM [mydatabase].[dbo].[calibration]
    
    
    
    USE [mydatabase]
    GO
    SELECT * FROM [calibration]
    

    【讨论】:

    • 不,我不能做 SELECT TOP 1000 [rid] ,[filename] ,[qcname] ,[compound] ,[response] ,[isid] ,[isidresp] ,[finalconc] ,[rowid] FROM [校准]
    • 如果您不能只使用校准,那么您不在正确的数据库中。请先使用测试 GO
    • 请记住 GO 不是 SQL 构造,而是由 SSMS 和 SMO 处理的批处理分隔符 =)
    【解决方案2】:

    SqlServer 在引用表时使用所有者名称。在这种情况下,dbo 是所有者。

    MySQL 不使用所有者作为表名,这就是为什么您之前没有看到这些名称的原因。

    【讨论】:

      【解决方案3】:

      SQL Server 有一种称为架构的东西,在这种情况下,默认架构是 dbo,但它可以是您想要的任何东西。模式用于对对象进行逻辑分组。因此,您可以创建一个 Employee 架构并在其中拥有所有 Employee 表、视图、过程和函数,这也使您能够让某些用户仅访问某些架构

      【讨论】:

        【解决方案4】:

        告诉我你使用过的迁移工具,并告诉我fromto数据库的版本。

        问候
        尤金

        【讨论】:

        • ssma,mysql 5.1,sql server 2008
        • @Michael - 直到获得赞成票为止。尤金的评论要求低于 50 名代表。
        【解决方案5】:

        默认架构确实存在问题,如果它为您登录的用户设置为“dbo”,因为您不需要指定它。见http://msdn.microsoft.com/en-us/library/ms176060.aspx

        【讨论】:

          猜你喜欢
          • 2012-05-17
          • 2011-06-17
          • 2014-05-24
          • 2011-10-07
          • 1970-01-01
          • 2011-06-23
          • 2011-03-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多