我使用 postgresql,我需要删除模式中存在的所有表。如何从命令提示符中删除。
我们有一个非常大(1 亿行)的表,我们需要更新其中的几个字段。
对于日志运输等,我们显然也希望将其保持为一口大小的交易。
代码是:
DECLARE @CHUNK_SIZE int
SET @CHUNK_SIZE = 10000
UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01'
where deleted is null or deletedDate is null
WHILE @@ROWCOUNT > 0
BEGIN
UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01'
where deleted is null or deletedDate is null
END
Run Code Online (Sandbox Code Playgroud) 我的 Oracle 数据库中有一个表,其中
select pkcol, count(*) from myTable group by pkcol having count(*) > 1;
Run Code Online (Sandbox Code Playgroud)
产量
PKCOL COUNT(*)
------- ----------
1 2
2 2
Run Code Online (Sandbox Code Playgroud)
试图删除重复的行
delete myTable where pkcol = 1;
Run Code Online (Sandbox Code Playgroud)
产量:
ORA-01502: 索引“MYTABLE.PK_MT”或此类索引的分区处于可用状态。
我正在使用 Oracle.DataAccess.Client.OracleBulkCopy 来填充表格。
据我了解,必须检查Oracle PRIMARY KEY 约束的文档。
显然它们没有被检查,正如我通过连续两次执行相同的批量复制而发现的,这些批量复制以所有行中的重复结束。
现在我只在删除所有行后才使用它,并且我正在使用一个具有类似主键的表作为源。因此,我预计不会有任何问题。
但是深深嵌入到我的 MS Build 脚本中,我最终在 2210 行中只有 2 个重复。
我想首先忽略主键是一个明显的错误。不允许批量复制忽略主键约束。
编辑:
同时我发现,在调用bulkcopy之前,通常由某个脚本插入的2个冲突行。问题归结为我的已知问题,bulkcopy 不会在这里检查主键。
我们正在尝试将 Reporting Services 配置为使用托管服务帐户。环境是:
服务器:Windows 2008 R2 SP1 报告服务:SQL Server 2012(版本 11.0.6567.0)
目前,SSRS 作为域服务帐户运行,但我们希望更改为作为 MSA 运行。SQL Server 实例和代理均已成功更改为使用 MSA。
当我尝试通过 Reporting Services 配置管理器将服务帐户更改为 MSA 时,收到错误消息:
Microsoft.ReportingServices.WmiProvider.WMIProviderException:帐户名无效。以域\别名的形式指定一个帐户。
---> System.Runtime.InteropServices.COMException (0x8004021D): 来自 HRESULT 的异常:0x8004021D --- 内部异常堆栈跟踪结束 --- 在 Microsoft.ReportingServices.WmiProvider.RSWmiAdmin.ThrowOnError(ManagementBaseObject mo) 在 Microsoft.ReportingServices .WmiProvider.RSWmiAdmin.SetWindowsServiceIdentity(String accountName, SecureString password, Boolean useBuiltinAccount) at ReportServicesConfigUI.WMIProvider.RSReportServerAdmin.SetWindowsServiceIdentity(String accountName, SecureString password, Boolean useBuiltinAccount)
我的问题很简单:
有没有人成功更改 SSRS 服务帐户以使用托管服务帐户?如果是,怎么办?!
我正在尝试使用 rman 备份将我的数据库 ( 11.2.0.4 ) A迁移到另一台机器。目前,在源机中,redo log文件,temp文件存放在目录foo( /foo)下。在目标机器中,我想将这些文件存储在目录栏 ( /bar) 下。在过去的实践中,我所做的是为这些文件创建foo,并在恢复完成后手动将这些文件移动到bar。RMAN 是一个如此强大的工具,我认为必须有一些简单的方法来满足我的要求。到目前为止,通过搜索谷歌,我得到了一个有用的临时文件 rman 命令:
set newname for tempfile <fileno> to '<path>'
Run Code Online (Sandbox Code Playgroud)
重做文件好像没有类似的命令。在使用此命令执行恢复之前,我有几个问题要问:
alter database open resetlogs恢复完成后打开( )数据库时,存在重做日志文件和临时文件。rman 会自动为数据库创建这个吗?我找不到有关此主题的可靠 oracle 文档。当我在 PG 管理查询工具中尝试时,此查询对我有用:
UPDATE bankdetails SET bank_details = 'mysore' ,"PAN"= 123,bank_acc = 456,
"UAN"=789,tax = 'myy'
WHERE user_id = 79;
INSERT INTO bankdetails (user_id,bank_details,"PAN",bank_acc,"UAN",tax)
SELECT 79,'mysore',123,456,789,'myy'
WHERE NOT EXISTS (SELECT 1 FROM bankdetails WHERE user_id=79);
Run Code Online (Sandbox Code Playgroud)
后来我在我的代码中是这样实现的:
db.query('UPDATE bankdetails SET bank_details = $2 ,"PAN"= $3,bank_acc = $4,"UAN"=$5,tax = $6 WHERE user_id = $1; INSERT INTO bankdetails (user_id,bank_details,"PAN",bank_acc,"UAN",tax) SELECT $1,$2,$3,$4,$5,$6 WHERE NOT EXISTS (SELECT 1 FROM bankdetails WHERE user_id = $1);', [companyuser.rows[0]._id, data.bankDetails.bank_details, data.bankDetails.PAN, data.bankDetails.bank_acc, data.bankDetails.UAN, data.bankDetails.tax],function(err,bank) {
if (err) return callback(new …Run Code Online (Sandbox Code Playgroud) 我有一个非常基本的数据库,用于跟踪 6 个不同事件的分数。每个事件包含 4 个事件。
我的当前 SQL 查询非常基本,看起来与下面的非常相似;
Select Name,
SUM(ISNULL(p.e1_e1_points, 0)+ISNULL(p.e1_e2_points, 0)+ISNULL(p.e1_e3_points, 0)+ISNULL(p.e1_e4_points, 0)) AS Event1,
SUM(ISNULL(p.e2_e1_points, 0)+ISNULL(p.e2_e2_points, 0)+ISNULL(p.e2_e3_points, 0)+ISNULL(p.e2_e4_points, 0)) AS Event2,
SUM(ISNULL(p.e3_e1_points, 0)+ISNULL(p.e3_e2_points, 0)+ISNULL(p.e3_e3_points, 0)+ISNULL(p.e3_e4_points, 0)) AS Event3,
SUM(ISNULL(p.e4_e1_points, 0)+ISNULL(p.e4_e2_points, 0)+ISNULL(p.e4_e3_points, 0)+ISNULL(p.e4_e4_points, 0)) AS Event4,
SUM(ISNULL(p.e5_e1_points, 0)+ISNULL(p.e5_e2_points, 0)+ISNULL(p.e5_e3_points, 0)+ISNULL(p.e5_e4_points, 0)) AS Event5,
SUM(ISNULL(p.e6_e1_points, 0)+ISNULL(p.e6_e2_points, 0)+ISNULL(p.e6_e3_points, 0)+ISNULL(p.e6_e4_points, 0)) AS Event6
from points
Run Code Online (Sandbox Code Playgroud)
我需要能够添加一个额外的列,它是列(事件 1、事件 2、事件 3 等)中的最小值。
我希望在 SQL Server 2008 中对 SQL 数据库进行完整的数据库备份。
我的问题是:
什么时候用好SELECT DISTINCT ..,什么时候不好用?
基本上,每当我看到DISTINCT关键字时,我就会开始变得谨慎,因为大多数情况下最终会发现实际查询存在一些问题(选择性不够、连接不良、逻辑不正确等)。
你有类似的经历还是只是我?
我们有许多 SSRS 报告定时订阅(SQL Server 2008R2 SP4)。我们的一位报告开发人员尝试删除报告订阅,但出现以下错误:
报表服务器数据库中出现错误。这可能是由于数据库中的连接失败、超时或磁盘空间不足造成的。(rsReportServerDatabaseError) 获取联机帮助 DELETE 语句与 REFERENCE 约束“FK_ReportSchedule_Subscriptions”冲突。冲突发生在数据库“ReportServer”、表“dbo.ReportSchedule”、“SubscriptionID”列中。该语句已终止。
我通过从ReportServer.dbo.ReportSchedule表中手动删除计划记录解决了这个问题。
步骤如下:
1、找到需要删除的相关订阅。
SELECT sub.SubscriptionID,
rs.ScheduleID,
SUB.[Description]
,SUB.EventType
,SUB.DeliveryExtension
,SUB.LastRunTime
FROM dbo.Subscriptions AS SUB
INNER JOIN dbo.Users AS USR ON SUB.OwnerID = USR.UserID
INNER JOIN dbo.ReportSchedule AS RS ON SUB.Report_OID = RS.ReportID
AND SUB.SubscriptionID = RS.SubscriptionID
WHERE SUB.Description like '%**Mail reciepient here**%'
ORDER BY sub.Description
Run Code Online (Sandbox Code Playgroud)
2. 找到防止记录被删除的相关时间表。
SELECT [ScheduleID]
,[ReportID]
,[SubscriptionID]
,[ReportAction]
FROM [ReportServer].[dbo].[ReportSchedule]
WHERE SubscriptionID = '**GUID HERE**'
Run Code Online (Sandbox Code Playgroud)
3.备份表
SELECT *
INTO [ReportServer].[dbo].[ReportScheduleBackup]
FROM [ReportServer].[dbo].[ReportSchedule] …Run Code Online (Sandbox Code Playgroud) sql-server ×6
postgresql ×2
ssrs ×2
backup ×1
bulkcopy ×1
constraint ×1
oracle ×1
oracle-11g ×1
rman ×1
t-sql ×1