数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

6
查看具有作业开始时间的SQL Server中正在运行的作业的脚本
如何编写脚本以查看具有作业开始时间的SQL Server中正在运行的作业? SELECT sj.name, sja.run_requested_date, CONVERT(VARCHAR(12), sja.stop_execution_date-sja.start_execution_date, 114) Duration FROM msdb.dbo.sysjobactivity sja INNER JOIN msdb.dbo.sysjobs sj ON sja.job_id = sj.job_id WHERE sja.run_requested_date IS NOT NULL ORDER BY sja.run_requested_date desc;

7
使用DTS导入/导出向导导入数据时如何处理FK约束?
我正在尝试使用SQL Server导入和导出向导将数据从生产数据库复制到开发数据库,​​但是当我这样做时失败,并显示错误“ INSERT语句与FOREIGN KEY约束冲突”,我有40多个表FK约束,是否有一些简单的方法可以解决此问题,而无需编写放置约束/添加constrat脚本? 编辑:我刚刚发现,在我正在运行的Web版本的SQL Server中,DTS不允许您保存软件包。

2
将远程Postgres表导出为本地计算机上的CSV文件
我对远程服务器上的数据库具有只读访问权限。因此,我可以执行: COPY products TO '/tmp/products.csv' DELIMITER ','; 但是在该服务器上,我没有创建/保存文件的权限,因此我需要在本地计算机上执行此操作。 当我连接到远程数据库时,如何执行命令将文件保存在本地计算机而不是远程服务器上? 或者,如何执行Linux命令以连接到远程数据库,执行查询并将输出作为文件保存到本地计算机?
16 postgresql  export  csv  copy 



4
SQL Server发生I / O请求的时间超过15秒
在生产SQL Server上,我们具有以下配置: 将3台Dell PowerEdge R630服务器组合到可用性组中,所有3台都连接到单个RAID SAN存储单元,该存储单元是一个RAID阵列 有时,在PRIMARY上,我们会看到类似以下的消息: SQL Server在数据库ID 8 的文件[F:\ Data \ MyDatabase.mdf]中遇到11次I / O请求,而这些请求花费的时间超过15秒。OS文件句柄为0x0000000000001FBC。 最新的长I / O的偏移量是:0x000004295d0000。 长I / O的持续时间为:37397毫秒。 我们是性能故障排除的新手 解决与存储相关的特定问题的最常用方法或最佳做法是什么?必须使用哪些性能计数器,工具,监视器,应用程序等来缩小此类消息的根本原因?可能会有可以提供帮助的扩展事件,或者某种审计/日志记录?


4
CHAR与VARCHAR(Postgres)的索引性能
在这个答案(/programming/517579/strings-as-primary-keys-in-sql-database)中,有一条话引起了我的注意: 还请记住,进行索引比较时,CHAR和VARCHAR之间通常会有很大的差异 这是否适用/仍适用于Postgres? 我发现Oracle上的页面声称CHAR或多或少是别名VARCHAR,因此索引性能是相同的,但是在Postgres上没有确定的定义。

1
多租户SQL Server数据库中的复合主键
我正在使用ASP Web API,实体框架和SQL Server / Azure数据库构建多租户应用程序(单个数据库,单个架构)。此应用将由1000-5000个客户使用。所有表都将具有TenantId(Guid / UNIQUEIDENTIFIER)字段。现在,我使用的是ID(Guid)的单字段主键。但是,仅使用Id字段,我就必须检查用户提供的数据是否来自/正确的租户。例如,我有一个SalesOrder包含CustomerId字段的表。每次用户发布/更新销售订单时,我都必须检查是否CustomerId来自同一租户。情况变得更糟,因为每个租户可能都有多个出口。然后我要检查TenantId和OutletId。这确实是维护的噩梦,并且对性能不利。 我正在考虑将一起添加TenantId到主键中Id。并可能也添加OutletId。所以在主键SalesOrder表将是:Id,TenantId,和OutletId。这种方法的缺点是什么?使用复合键会严重损害性能吗?复合键顺序重要吗?我的问题有更好的解决方案吗?

3
使用PostgreSQL 8.4,如何将bytea转换为postgres中的文本值?
在我的应用程序中,我使用C代码将数据插入数据库中,因为从不可信来源收到的字符串已经使用PQescapeByteaConnlibpq库转义了。这工作得很好,即以八位字节格式生成字符串。参见以下示例, 输入字符串: \n\t\f\b\p\k\j\l\mestPrepared 输出字符串: \\012\\011\\014\\010pkjlmestPrepared 输出字符串将插入数据库中。现在,我使用JDBC以Java代码从数据库中检索该数据。我如何才能使字符串不转义回其原始值? 我想到了两种可能的方法, 更改数据库检索查询,并将此字段传递给postgres的任何String操作函数,即可以将bytea转换为文本的函数。 用Java代码进行解码。 我知道方法1会更有效。我已经尝试了这里列出的几乎所有功能,但是没有任何效果。请帮忙!! 我正在Linux机器上使用PostgreSQL的8.4版本。

1
在使用pg_restore.exe之前禁用约束
当我尝试pg_restore.exe从数据库执行转储文件时,它会引发数十个错误,所有错误均相同: ERROR: insert or update on table "someTable" violates foreign key constraint "aConstraintName" 这显然是由于我在从转储文件(该文件来自生产数据库)还原数据库之前清空了数据库的事实...当然,如果一个引用表为空,则没有外键约束可以... 在我调用之前pg_restore.exe和之后,有没有一种方法可以针对所有表禁用约束和所有外键,然后重新启用约束和外键。 在SO中,我发现了一些有趣的东西:将约束检查推迟到提交时间。但是我认为在推迟约束之后我不能pg_restore.exe从内部打电话psql.exe。 也有这篇帖子,可以追溯到10年前,建议删除然后重新添加约束。或将pg_class重新触发的值更改为0,这对于约束也可能是可行的...但是,恐怕它比好的实践更容易被黑客入侵... 您有什么建议,这种情况下的最佳做法是什么?是否pg_dump.exe 与该-clean标志一起使用会创建一个转储,从而在还原数据库时绕过约束检查?


1
psql 9.5:gen_random_uuid()不起作用
SELECT gen_random_uuid() 产生输出 ERROR: function gen_random_uuid() does not exist SQL state: 42883 Hint: No function matches the given name and argument types. You might need to add explicit type casts. 我CREATE EXTENSION pgcrypto;在选定的数据库上运行并且SELECT gen_random_bytes(1)运行完美(gen_random_bytes不适用于pgcrypto未手动创建扩展名的其他数据库)。 % psql --version psql (PostgreSQL) 9.5.3 Ubuntu版本是16.04。

3
消除会降低性能的键查找(集群)运算符
如何在执行计划中消除键查找(集群)运算符? 表tblQuotes已经有一个聚集索引(QuoteID)和27个非聚集索引,因此我尝试不再创建任何索引。 我QuoteID在查询中放入了聚集索引列,希望对您有所帮助-但不幸的是还是一样。 执行计划在这里。 或查看它: 这就是“关键点查找”运算符所说的: 查询: declare @EffDateFrom datetime ='2017-02-01', @EffDateTo datetime ='2017-08-28' SET NOCOUNT ON SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED IF OBJECT_ID('tempdb..#Data') IS NOT NULL DROP TABLE #Data CREATE TABLE #Data ( QuoteID int NOT NULL, --clustered index [EffectiveDate] [datetime] NULL, --not indexed [Submitted] [int] NULL, [Quoted] …

1
将元素上载到表中时,“列引用不明确”
我正在使用PostgreSQL作为数据库。我需要在数据库中创建一个条目,如果该条目已经存在,则只需更新其字段即可,但是只有未设置该字段时,才应更新其中一个字段。 我已经从这个问题中使用过信息:https : //stackoverflow.com/questions/13305878/dont-update-column-if-update-value-is-null,它与我所拥有的很相关。 我尝试使用此查询,但是当我运行它时,它出现以下错误Column reference 'affiliate_code' is ambiguous: INSERT INTO accounts (id, token, affiliate_code) VALUES (value1, value2, value3) ON CONFLICT (id) DO UPDATE SET token = value2, affiliate_code = COALESCE(affiliate_code, value3); (当然,实际值将被替换)。 如果我替换affiliate_code = COALESCE(affiliate_code, value3)为affiliate_code = value3,则一切正常,但并非以我希望的方式运行。 我该如何工作? 这是我的表格的定义方式: CREATE TABLE accounts ( id VARCHAR NOT NULL UNIQUE, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.