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?
dbo是您创建的任何内容(表,存储过程等)的标准数据库所有者,因此迁移工具会自动为其添加前缀.
当您访问Sql Server中的某些内容时,例如调用的表calibration,以下内容在功能上是等效的:
calibrationdbo.calibrationdatabase_name.dbo.calibrationserver_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)