MySql到Sql Server的迁移问题

l--*_*''' 4 mysql sql sql-server

我使用迁移工具成功地从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]
Run Code Online (Sandbox Code Playgroud)

这是行不通的

但是,当我这样做时:

SELECT TOP 1000 [rid]
      ,[filename]
      ,[qcname]
      ,[compound]
      ,[response]
      ,[isid]
      ,[isidresp]
      ,[finalconc]
      ,[rowid]
  FROM [test].[dbo].[calibration]
Run Code Online (Sandbox Code Playgroud)

有用.

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

Rob*_*Rob 5

dbo是您创建的任何内容(表,存储过程等)的标准数据库所有者,因此迁移工具会自动为其添加前缀.

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

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

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

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

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



USE [mydatabase]
GO
SELECT * FROM [calibration]
Run Code Online (Sandbox Code Playgroud)

  • 如果你不能只使用校准,那么你就不在正确的数据库中.请先使用测试GO (3认同)
  • USE [mydatabase]不使用 (3认同)