小编dez*_*zso的帖子

只应为任何逻辑文件名指定一个 WITH MOVE 子句

我正在尝试通过编写备份和还原脚本来复制数据库。我的备份程序工作正常,但我不断收到错误消息

已为文件指定了冲突的文件重定位。只应为任何逻辑文件名指定一个 WITH MOVE 子句。

当我运行该程序进行还原时。

这是程序代码。谁能发现我的错误是什么?

ALTER PROCEDURE spDBRestore (@BackupName NVARCHAR(50), @RestoreName NVARCHAR(50))
AS 
BEGIN
DECLARE @BackupPath NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\TemplateCopy\'+@BackupName+'.BAK',
@NewDBFileName NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\'+@RestoreName+'.mdf',
@NewLFFileName NVARCHAR(4000) = 'L:\MSSQL10_50.MSSQLSERVER\MSSQL\Data\'+@RestoreName+'_1.ldf'
select @BackupName, @RestoreName, @NewDBFileName, @newlffilename
RESTORE DATABASE @RestoreName
FROM DISK = @BackupPath
WITH FILE = 1,
MOVE @BackupName TO @NewDBFileName,
MOVE @BackupName TO @NewLFFileName,
NOUNLOAD,
REPLACE;

END
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server backup stored-procedures

2
推荐指数
1
解决办法
2852
查看次数

INT IDENTITY 列上的 PK 分片

有简单的Int Identity我PK。

表有 220 万行。

删除了零行,从未禁用身份。

一次通过 .NET 插入一行,每次插入都检索SCOPE_IDENTITY().

20 与它的一些 FK 关系。

我有 98% 的碎片。

知道是什么原因造成的吗?

我知道修复是重建,今晚会这样做。

我想知道如何避免它。

自从填充以来,我已经添加了 3 列。
一些列几乎修改了每个值。
属性的长度没有太大变化。

表定义

/****** Object:  Table [dbo].[docSVsys]    Script Date: 02/13/2013 15:52:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[docSVsys](
    [sID] [int] IDENTITY(1,1) NOT NULL,
    [sParID] [int] NULL,
    [docID] [varchar](100) NOT NULL,
    [attBeg] [varchar](100) NULL,
    [attEnd] [varchar](100) NULL,
    [docDate] [smalldatetime] NULL,
    [addDate] [smalldatetime] NOT NULL,
    [mimeType] [varchar](40) …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

2
推荐指数
1
解决办法
1310
查看次数

重复键违反唯一约束

当我使用这个查询时,一切都很好:

UPDATE users 
   SET f_name='Mike', 
       l_name='MyLastName', 
       username='blabla', 
       "password"='asdfsdaf', 
       "class"=12, 
       lang='en' 
 WHERE id=50;
Run Code Online (Sandbox Code Playgroud)

我创建了一个结合了两个表的视图:

CREATE OR REPLACE VIEW students_data AS 
SELECT students.id, 
       users.f_name, 
       users.l_name, 
       users.username, 
       users."password", 
       users."class", 
       users.permission, 
       users.sessionid, 
       users.lastlogin, 
       users.lang
  FROM students
  LEFT JOIN users ON students.id = users.id;
Run Code Online (Sandbox Code Playgroud)

我还创建了这个规则:

CREATE OR REPLACE RULE students_data_update AS
    ON UPDATE TO students_data DO INSTEAD  
       UPDATE users 
          SET f_name = new.f_name, 
              l_name = new.l_name, 
              username = new.username, 
              "password" = new."password", 
              "class" = new."class", 
              permission = new.permission, 
              sessionid = new.sessionid, 
              lastlogin = new.lastlogin, 
              lang …
Run Code Online (Sandbox Code Playgroud)

postgresql unique-constraint

2
推荐指数
1
解决办法
1万
查看次数

从 hstore 字段中提取所有标签

我需要按对象 id 从 postgres 9.2+postgis 2.1 数据库中提取(复制)所有 hstore 标签到一个外部文件中进行后处理。由于每条记录的键和值各不相同,而且我不知道键或值是什么,因此我必须使用通配符。

遗憾的是,我的秘密解码器环似乎让我失望了,因为我尝试过的一切都没有奏效,可能是因为我所有的专业知识都在 vanilla sql 和 mysql/mariadb 上。

非常感谢您的帮助。

postgresql postgresql-9.2 hstore

2
推荐指数
1
解决办法
2926
查看次数

复杂的更新查询 postgres

我从 table 中得到了一堆 id messages,我想更新 table activities。这就是我想象我的查询会起作用的方式(因此您可以更好地了解我要完成的任务):

update activities
set activities.created_at = messages.created_at,
set activities.updated_at = messages.updated_at
from messages
where messages.id in (1,2,3)
activities.trackable_id in (1,2,3)
Run Code Online (Sandbox Code Playgroud)

在 中activitiestrackable_idmessages表的外键。所以我需要在活动表中为一些消息设置权限created_atupdated_at时间。

所以基本上activity表格是表格的副本,messages但只是另一种格式。

如何更新活动表中某些消息 ID 的 created_at 和 updated_at,但使用消息表中的数据(数据为 updated_at 和 created_at)?

postgresql

2
推荐指数
1
解决办法
1241
查看次数

pgpool 负载平衡仅将所有查询发送到 master

我的两个 postgresql 服务器配置为流复制,工作正常。

Pgpool 配置为主从模式/负载平衡模式。

pgpool.conf:

listen_addresses = '*'
port = 9999
backend_hostname0 = 'master-postgres-ip'
backend_port0 = port-no
backend_weight0 = 1
backend_data_directory0 = 'data-dir'
backend_hostname1 = 'slave-postgres-ip'
backend_port1 = port-no
backend_weight1 = 1
backend_data_directory1 = 'data-dir'
load_balance_mode = on
master_slave_mode = on
master_slave_sub_mode='stream'
Run Code Online (Sandbox Code Playgroud)

我预计所有写入查询都将转到主查询,而读取查询将分布在两个查询之间。但是,所有的查询都只是为了掌握。但是,如果我停止主控,查询将变为从属。

有人可以告诉我可能出了什么问题吗?

pgpool 在启动时给出以下日志:

2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 0
2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 1
2015-11-03 17:25:56: pid 21284: DEBUG:  SSL is requested but SSL support is not …
Run Code Online (Sandbox Code Playgroud)

postgresql pgpool load-balancing

2
推荐指数
1
解决办法
6118
查看次数

如何将使用 pg_dump 创建的纯数据转储加载到另一个数据库?

我的开发服务器上有两个 PostgreSQL 数据库,一个用于开发,另一个用于测试 Web 应用程序的生产。当我使用早期版本的 PostgreSQL 时,我能够在 pgAdmin 中轻松创建我的 prod 数据库的 TAR 转储文件,并在选择首先清理数据库的选项后使用相同的 TAR 文件来恢复我的开发数据库。不久前,我将 pgAdmin 升级到了应该可以与 PostgreSQL 9.4 一起使用的版本(我认为是 1.20.0)。无论出于何种原因,我无法恢复该版本中的文件。我尝试过 TAR 和 SQL,但恢复按钮始终受到保护。

我决定使用pg_dump并创建一个仅包含生产数据库数据插入语句的 SQL 文件。我想做的是复制我在 pgAdmin 中能够做的事情:清理我的开发数据库并将我的pg_dumpSQL 文件加载到其中。

我已经搜索过,但到目前为止我还没有找到任何如何在 pgAdmin 或终端中执行此操作的示例。

pgadmin pg-dump postgresql-9.4

2
推荐指数
1
解决办法
1万
查看次数

获取昨天的记录,但每小时

我目前正在从我的数据库中获取昨天的所有数据,但我想获取每小时的数据。这是我的查询:

select
    camera_id,
    count(*) as snapshot_count
from snapshots
where created_at >= TIMESTAMP 'yesterday' 
  and created_at <  TIMESTAMP 'today'
group by camera_id
Run Code Online (Sandbox Code Playgroud)

它给了我昨天的所有记录,但是怎么可能从昨天获取记录但每个小时?

PS:我想在一个查询中运行它,而不是 24 个查询

postgresql postgresql-9.3

2
推荐指数
1
解决办法
6482
查看次数

使用其他列中的静态数据在 Postgres 中导入 CSV

如何COPY在 Postgres 中创建 CSV 文件以及不在 CSV 中的列的静态数据?在 MySQL 中,我可以LOAD DATA INFILE ...对列名以及文件中不存在的列的任何值进行分析。我想用 Postgres 做类似的事情,但COPY命令不支持。

postgresql bulk-insert

2
推荐指数
1
解决办法
2501
查看次数

向模式中的所有表添加列的命令

如果表在模式中不包含该列,您能否给出向所有表添加一列的命令?

例如,模式schema1包含 50 个表,其中 20 个表包含名为 的列colTest

我需要将该列添加colTest到剩余的 30 个表中。

postgresql dynamic-sql postgresql-9.4

2
推荐指数
1
解决办法
1833
查看次数