当我尝试将tSQLt安装到现有数据库时,我收到以下错误:
记录在主数据库中的数据库所有者SID与记录在数据库''中的数据库所有者SID不同.您应该通过使用ALTER AUTHORIZATION语句重置数据库''的所有者来纠正这种情况.
我从 AssertEqualsTable 收到此错误“数据类型文本和文本在等于运算符中不兼容。”
然后
“‘TableCompare’过程试图返回 NULL 状态,这是不允许的。将返回 0 状态。”
select *
into #Actual
from [dbo].[InvoiceOut];
--make expected table an empty table of #actual's structure because we truncate so it should be empty.
SELECT TOP(0) *
INTO #Expected
FROM #Actual;
EXEC tSQLt.AssertEqualsTable '#Expected', '#Actual';
Run Code Online (Sandbox Code Playgroud)
--部分相关表信息
CREATE TABLE [dbo].[InvoiceOut](
...
[InsertField] [text] NULL,
[DeductibleText] [text] NULL,
[BarcodeText] [text] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud) {"无法将值NULL插入列'RootID',表'Legacy.dbo.Middle';列不允许空值.INSERT失败.\ r \n语句已终止."}
我有一个Root类,Middle类和'bottom'类.作为孩子的"中间"的根类,然后中间有"底部"作为孩子.但是,在这个设计较差的遗留数据库中,还有一个来自"Bottom"的"Root"引用.
根表
CREATE TABLE [dbo].[Root](
[RootID] [int] IDENTITY(1,1) NOT NULL,
[RootName] [varchar](max) NOT NULL,
CONSTRAINT [PK_Root] PRIMARY KEY CLUSTERED
(
[RootID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
中间的桌子
CREATE TABLE [dbo].[Middle](
[MiddleID] [int] IDENTITY(1,1) NOT NULL,
[MiddleName] [varchar](max) NOT NULL,
[RootID] [int] NOT NULL,
CONSTRAINT [PK_Middle] PRIMARY KEY CLUSTERED
(
[MiddleID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = …Run Code Online (Sandbox Code Playgroud)