数据库管理员

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

2
在SSDT中引用系统视图?
我已将一个数据库导入SSDT,其中包含对系统视图(特别是sys.columns)的引用。问题是,当我构建项目时,我随后收到有关未解析引用的警告 从我在MSDN论坛上看到的来看,这似乎是一个已知的问题:http : //social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/5a7026bd-0602-42e6-a639- d73bed903c26 现在,我知道我可以关闭或忽略该警告,但是有人知道实际的解决方案吗? 谢谢

1
错误:数据库“ dbname”不存在
根据文档,只要不连接数据库,就可以使用以下命令在控制台中删除数据库: DROP DATABASE dbname; 或者,我可以使用包装器工具将其删除dropdb。 两者都给我一个错误,指出该数据库不存在,但是在控制台中并键入命令时\l,我得到了一个数据库列表,包括要删除的数据库。 List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------------------+-----------+----------+-------------+-------------+----------------------- Blog_development | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 | Blog_test | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 | 数据库名称为Blog_development(及其下一个)。我在玩滑轨,尝试从在线文档中学习。我想重新开始并删除所有内容。 但是,当尝试删除它时,它说它不存在。我是PostgreSQL的新手,所以我有点迷失了,除了错误在不存在时弹出之外,文档中没有关于此错误的任何内容。当然存在,就在那。
19 postgresql 

2
用plpgsql编写的函数调用的Postgres查询计划
它使用的时候可能pgadmin还是plsql获得查询计划的搁置了内部执行SQL语句ü SER d efined ˚F油膏(UDF)使用EXPLAIN。那么,如何掌握UDF特定调用的查询计划?我看到UDF F()在pgadmin中抽象为一个操作。 我看过文档,但找不到任何东西。 目前,我正在提取语句并手动运行它们。但这对于大型查询并不会减少它。 例如,考虑下面的UDF。此UDF即使具有打印其查询字符串的能力,也不能与复制粘贴一起使用,因为它具有在本地创建的临时表,在粘贴和执行该表时不存在该临时表。 CREATE OR REPLACE FUNCTION get_paginated_search_results( forum_id_ INTEGER, query_ CHARACTER VARYING, from_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, to_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, in_categories_ INTEGER[] DEFAULT '{}') RETURNS SETOF post_result_entry AS $$ DECLARE join_string CHARACTER VARYING := ' '; from_where_date …



1
是否可以更改ENUM()列表?
我不确定是否无法更改ENUM()列表,所以我进行了测试。在MySQL v5.1.58中,我测试了一个InnoDB表,其中包含一个名为ENUM('yes','no')类型的“ bool”字段。 然后我执行了... ALTER TABLE `test` CHANGE `bool` `bool` ENUM( 'yes', 'no', 'maybe' ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ...而且有效。 我做错了什么吗?它取决于数据库引擎吗?为什么每个人都说不可能更改ENUM()列表?例如。此处http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
19 mysql  innodb 

2
外键会导致死锁并阻碍“读取已提交的快照”吗?
这是来自以下方面的后续问题:https : //stackoverflow.com/questions/7684477/is-it-possible-to-set-transaction-isolation-level-snapshot-automatically 尽管同时运行大型报表时,我仍然在ASP.NET应用程序中遇到死锁/超时的情况READ_COMMITTED_SNAPSHOT ON。 所以我有两个问题: 如何检查“ 事务隔离级别快照”是否按预期运行/完全正常? 我假设外键(在Web应用程序表中的报表表中)引起死锁。我发现这篇有趣的文章: 注意 SQL Server在验证外键时会获取共享锁,即使该事务使用的是读取提交的快照(使用行版本控制读取的提交)或快照隔离级别。当使用这些事务隔离级别检查来自事务的死锁图时,请注意这一点。如果看到共享锁,请检查是否对由外键引用的对象进行了锁定。 如何检查FK是否真正引起了死锁/超时情况,这是否意味着我可以删除那些外键以防止死锁(这是可以接受的工作)? 注意:我只是从导致死锁的表中读取。 对此主题的任何想法都将不胜感激。 编辑 这是一个死锁图。也许有人可以帮助我了解造成僵局的原因。似乎是在没有任何报告仅由Web应用程序运行的情况下发生的,当两个事务要写入同一个表时(一个更新和一个插入,该插入与存储过程相同)。为什么要获取页锁?如何仅启用行锁?Insert-SP已使用TRANSACTION ISOLATION LEVEL REPEATABLE READ。 我非常怀疑两个触发器(一个更新和一个插入)是造成死锁的原因。这是插入触发器: CREATE TRIGGER [dbo].[CreateRMAFiDates] ON [dbo].[RMA] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE RMA SET [fiCreationDate]=(SELECT idDate FROM tdefDate WHERE CONVERT(VARCHAR, INSERTED.Creation_Date, 112) = tdefDate.Text), [fiPopDate]=(SELECT idDate FROM …


2
默认约束,值得吗?
我通常按​​照以下规则设计数据库: 除db_owner和sysadmin外,其他任何人都不能访问数据库表。 用户角色在应用程序层进行控制。我通常使用一个db角色来授予对视图,存储过程和函数的访问权限,但是在某些情况下,我添加了第二条规则来保护某些存储过程。 我使用TRIGGERS最初验证关键信息。 CREATE TRIGGER <TriggerName> ON <MyTable> [BEFORE | AFTER] INSERT AS IF EXISTS (SELECT 1 FROM inserted WHERE Field1 <> <some_initial_value> OR Field2 <> <other_initial_value>) BEGIN UPDATE MyTable SET Field1 = <some_initial_value>, Field2 = <other_initial_value> ... END DML使用存储过程执行: sp_MyTable_Insert(@Field1, @Field2, @Field3, ...); sp_MyTable_Delete(@Key1, @Key2, ...); sp_MyTable_Update(@Key1, @Key2, …



1
如何在未嵌套的数组中保留元素的原始顺序?
给定字符串: “我认为PostgreSQL很漂亮” 我想对在该字符串中找到的单个单词进行操作。本质上,我有一个单独的字符串,可以从中获取单词的详细信息,并希望在此字典中加入该字符串的未嵌套数组。 到目前为止,我有: select word, meaning, partofspeech from unnest(string_to_array('I think that PostgreSQL is nifty',' ')) as word from table t join dictionary d on t.word = d.wordname; 这样就完成了我希望做的基本工作,但是并没有保留原始的单词顺序。 相关问题: 带有元素编号的PostgreSQL unnest()



2
如何在postgres中对现有表进行分区?
我想按日期范围对具有1M +行的表进行分区。通常如何做到这一点而又不需要太多的停机时间或冒着丢失数据的风险?这是我正在考虑的策略,但可以提出一些建议: 现有表是主表,子表继承自该表。随着时间的流逝,数据会从主数据移到子数据,但是一段时间后,某些数据将在主表中,而某些数据将在子表中。 创建一个新的主表和子表。在子表的现有表中创建数据副本(因此数据将驻留在两个位置)。子表拥有最新数据后,请更改所有插入以指向新的主表并删除现有表。

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.