我们正在将数据从旧表(所有 varchar 字段)移动到强类型的对应提示中
作为这项工作的一部分,如果所有数据都可以正确转换为适当的类型,我们将从基础实体表中获取数据并将其转储到 Entity_New 中。否则,它将进入名为 Entity_Bad 的现有表的副本。
我们有一个规则引擎,可以在理论上验证数据和类型,因此即使数据存储在字符字段中,数据也应该是干净的。现实是我在这里发帖是因为有些事情已经过去了,我找不到了。Entity 中的 CompletionDate 字段是 varchar(46) NULL
环境是
productversion productlevel edition
10.0.4064.0 SP2 Enterprise Edition (64-bit)
Run Code Online (Sandbox Code Playgroud)
我的脚本展示了我在做什么以及什么在起作用但没有起作用
SET NOCOUNT ON
DECLARE
@startid int = 0
, @stopid int = 796833
-------------------------------------------------------------------------------
-- Check doesn't find anything wrong with CompletionDate
-------------------------------------------------------------------------------
SELECT
1
FROM
[dbo].[Entity] E
INNER JOIN
dbo.EntityBatch_New PB
ON E.FiscalYear = PB.FiscalYear
AND E.HashCode = PB.HashCode
AND E.AAKey = PB.AAKey
AND PB.ProcessResultCode IN ('A','W','M')
WHERE
PB.EntityBatchId BETWEEN @StartId AND @StopId
AND …Run Code Online (Sandbox Code Playgroud) 内存优化表将 LOB 类型存储在内部表中。
我有一个没有显式 LOB 类型的表,但是当我对sys.memory_optimized_tables_internal_attributes运行查询时,我看到列出的 varchar(255) 列的 type_desc 值为INTERNAL OFF-ROW DATA TABLE。
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
SET ANSI_PADDING ON;
GO
CREATE TABLE dbo.DERP
(
RECORD_KEY numeric(30, 0) NOT NULL
, COL_1 bigint NOT NULL
, COL_2 datetime2(0) NOT NULL
, COL_3 datetime2(0) NOT NULL
, COL_4 varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
, COL_5 varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
, COL_6 varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
, COL_7 date NULL
, COL_8 bigint NULL
, …Run Code Online (Sandbox Code Playgroud) 我正在阅读Oracle 概念文档并有疑问 [关于一般缓存机制]:
PL/SQL 函数代码可以包括缓存其结果的请求。调用此函数时,系统会检查缓存。如果缓存包含具有相同参数值的先前函数调用的结果,则系统将缓存的结果返回给调用者并且不重新执行函数体。如果缓存中不包含结果,则系统执行函数体并将结果(对于这些参数值)添加到缓存中,然后再将控制权返回给调用者
我的疑问:
执行 PL/SQL 函数后,其结果集存储在缓存中。然后 DDL 语句更改表/索引/函数使用的任何内容...
如果我现在运行相同的 PL/SQL 函数,我会得到相同的结果还是更新的结果?
我需要将 SQL Server 2000 数据库移动到 MySQL。我遇到了几个并发症。我不是 SQL Server 方面的专家。为了开始,我想要一个结构和数据的 csv 转储。
第一个问题,表视图中未列出应用程序明显正在使用的 3 个表。生成图表时,会出现一个弹出窗口,指出无法加载这些表。奇怪的是,这些表中的数据实际上是在应用程序中返回的(而不是缓存)。
第二个问题是DTS的使用。我正在使用向导将数据库导出为文本。我正在选择“从源数据库复制表和视图”。然后,我可以选择文件类型、分隔符等。有一个下拉列表选择了第一个表。我的问题是,我只能选择 1 个表,但我需要导出整个数据库。继续时,服务器将只导出第一个表。如何让它导出整个数据库?一桌一桌地做这件事会花费太多时间。
我有一些可以在 Access 中使用的代码,但现在我想将代码转发给我们的 IT 部门,以便在我们的 SQL 数据库中查看。
任何人都可以帮我转换它,以便它对普通 SQL 是正确的,而不是对 Access SQL 是正确的吗?
我曾尝试在 ORACLE SQL Developer 中对其进行测试,但出现错误:
第 1 行第 25 列错误:ORA-00923:未在预期位置找到 FROM 关键字
SELECT T1.*,
(SELECT TOP 1 T3.[SMN_DATEC]-1
FROM
(SELECT T2.[DET_NUMBERA], T2.[SMN_DATEC]
FROM [CHRISCS_EMSAL] AS T2
ORDER BY [DET_NUMBERA],[SMN_DATEC]
) AS T3
WHERE T3.[DET_NUMBERA] = T1.[DET_NUMBERA]
AND T3.[SMN_DATEC] > T1.[SMN_DATEC]
) AS EndDate,
T1.[DET_NUMBERA],
T1.[SMN_DATEC]
FROM CHRISCS_EMSAL AS T1
ORDER BY T1.[DET_NUMBERA],
T1.[SMN_DATEC];
Run Code Online (Sandbox Code Playgroud) 我发现一些与 SQL Server 复制相关的作业没有显示在 SSMS 的作业文件夹下。谁能解释一下这是为什么?
谢谢。
如何创建与此查询等效的 SQL Server?
SELECT m.ItemId
,item.NAME
,m.Expiratory
,m.t AS TotalNumber
FROM item
,(
SELECT ItemId
,Expiratory
,sum(TotalNumber) t
FROM inbox
GROUP BY Expiratory
,ItemId
) m
WHERE (
(
m.ItemId
,m.Expiratory
) NOT IN (
SELECT ItemId
,Expiratory
FROM outbox
GROUP BY Expiratory
,ItemId
)
)
AND (item.ItemID = m.ItemId)
Run Code Online (Sandbox Code Playgroud) sql-server ×5
oracle ×2
cache ×1
datetime ×1
dts ×1
export ×1
ms-access ×1
plsql ×1
replication ×1
t-sql ×1