出于性能原因,我正在审查应用程序针对数据库执行的每条 SQL 语句。有没有一种简单的方法来记录 PostgreSQL 数据库服务器执行的所有语句?谢谢。
我有一个数据库 A。里面有一些数据。我为 A 创建了一个备份作为A.bak文件。然后,我创建了一个新的空数据库B.然后我尝试从恢复乙A.bak。但是 SQL Server 告诉我以下错误:
文件“C:\SQL Directory\DATA\A.mdf”不能被覆盖。它正被数据库“A”使用。
但是,如果我从 SQL Server 中删除 A,则恢复正常。
我不明白为什么 SQL 需要在从单独的备份文件恢复时写入原始数据库文件?
谢谢~
我需要在所有表的所有列中执行这些语句。
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
Run Code Online (Sandbox Code Playgroud)
是否可以在 MySQL 中以任何方式自动执行此操作?我宁愿避免 mysqldump
更新:Richard Bronosky 向我展示了方式:-)
我需要在每个表中执行的查询:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
生成所有其他查询的疯狂查询:
SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';
Run Code Online (Sandbox Code Playgroud)
我只想在一个数据库中执行它。一口气执行所有操作花费的时间太长。事实证明,它为每个表的每个字段生成一个查询。每个表只需要一个查询(与救援不同)。在文件上获取输出是我实现它的方式。
如何生成输出到文件:
mysql -B -N --user=user --password=secret -e "SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' …Run Code Online (Sandbox Code Playgroud) 使用SQL Server 2008 Express时,您会推荐哪些备份解决方案?我对 SQL Server 很陌生,但由于我来自MySQL背景,我想在另一台计算机上设置复制,然后对该服务器进行Xcopy备份。
但不幸的是,复制在 Express Edition 中不可用。
该站点被大量访问,因此必须没有延迟和停机时间。我也在考虑每天做两次备份什么的。
你会推荐什么?我有多台计算机可以使用,但我不知道这是否对我有帮助,因为我使用的是 Express 版本。
我正在尝试在单个排序规则上标准化所有数据库 - Latin1_General_CI_AS(标准排序规则)。我有一些数据库位于 SQL_Latin1_General_CP1_CI_AS 中。
我知道我可以使用 ALTER DATABASE 来更改数据库排序规则,但这只会影响新对象。我的理解是,更改现有列的唯一方法是对每个表中的每一列执行 ALTER COLUMN - 我需要删除并重新创建所有索引才能做到这一点。
我想它看起来像这样:
DROP INDEX indexname ON tablename
GO
ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL
GO
CREATE CLUSTERED INDEX indexname ON tablename (columname ASC)
Run Code Online (Sandbox Code Playgroud)
并对整个数据库中的每个 varchar、char、text、nvarchar、nchar 和 ntext 列重复。那将是一个巨大的SQL 脚本。
有没有更简单的方法来做到这一点,或者任何人都可以建议一种自动创建 SQL 脚本的方法来做到这一点?
我有一个带有多 Gb 表(其中包含某些事件的日志)的 PostgreSQL 数据库。我需要将最新事件传递给分析师 - 假设他只需要上个月的事件。
我怎样才能产生只有那些行的转储,比如说,created_at > '2012-05-01'?
我管理着大约 90 个 SQL Server 实例,需要查询来确定分配给每个实例的内存量。请注意,我不是在问如何设置它,只是为了在不使用 Management Studio 的情况下查看它当前的设置。
谢谢你的帮助。
我觉得两个大型复杂 Oracle 模式之间存在一些差异,它们应该相同,因此决定转储并比较它们以进行调查。我找到了一篇文章(http://www.dba-oracle.com/art_builder_get_schema_syntax.htm),它提供了以下命令来转储表和索引定义。
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
Run Code Online (Sandbox Code Playgroud)
然而,当我转储和比较模式的输出线轴时,几乎每一行都存在微不足道的差异,使差异变得毫无价值。例如,模式名称包含在每个表定义中。
是否有更好的方法来执行此操作,以可以使用 diff 工具轻松比较的格式提供最重要的模式数据。我对表、索引和触发器感兴趣。
我使用的是 Oracle 数据库 10g 企业版 10.2.0.3.0 版
我正在安装 MS SQL Server 2008 R2,然后我进入了必须设置服务帐户的窗口。我想知道 NT AUTHORITY\SYSTEM" 和 "NT AUTHORITY\NETWORK SERVICE" 之间的区别。我试图用谷歌搜索它,但我没有找到这个问题的明确答案,我希望在这里找到。
sql ×10
sql-server ×3
database ×2
mysql ×2
postgresql ×2
automation ×1
backup ×1
installation ×1
memory ×1
oracle ×1
oracle10g ×1
tsql ×1
unicode ×1
utf-8 ×1
windows ×1