我正在将 SQL Server 6.5 数据库迁移到 SQL Server 2012。迁移进行得很顺利,但使用该数据库的其中一个软件执行了一个奇怪的查询:
UPDATE myTable SET Field1='',Field2=0, a.Field3=14 WHERE Field10=1
Run Code Online (Sandbox Code Playgroud)
问题当然在于 Field3 之前的标识符 ('a')。没有具有该名称的视图、别名或连接,但对于 SQL Server 6,5 而言,这是一个有效的查询。
由于我对 SQL Server 6.5 不熟悉,有没有人记得这个语法的含义?
使用此查询的软件是旧的,我没有任何来源(并且制作它的公司现已关闭......),因此更改查询不是一种选择。
完整的查询是
UPDATE SituazioneMacchina
SET DatiSetPointSpediti=''
, SpedMappa=0
, NrRichMappa=0
, DatiSetPoint=''
, a.IDProduzione=14
WHERE NumMacchina=1
Run Code Online (Sandbox Code Playgroud)
如果我将“a.IDProduzione”更改为“fasdffas.IDProduzione”,该查询在 SQL Server 6.5 中仍然有效
我有一个执行大量重复工作的查询:
SELECT visitor_id, '1'::text AS filter
FROM events
WHERE id IN (SELECT event_id FROM params
WHERE key = 'utm_campaign' AND value = 'campaign_one')
AND id IN (SELECT event_id FROM params
WHERE key = 'utm_source' AND value = 'facebook')
GROUP BY visitor_id
UNION ALL
SELECT visitor_id, '2'::text AS filter
FROM events
WHERE id IN (SELECT event_id FROM params
WHERE key = 'utm_campaign' AND value = 'campaign_two')
AND id IN (SELECT event_id FROM params
WHERE key = 'utm_source' AND value = 'facebook') …Run Code Online (Sandbox Code Playgroud) 有什么方法可以在 postgresql 中获取主机名/服务器名,例如 SQL Server 中的 @@ServerName?
我在 MySQL 数据库中有两个表 -t1一个列c1,t2一个列c2。
我运行这个查询:
select * from t1 where c1 in (select c1 from t2);
Run Code Online (Sandbox Code Playgroud)
上面的查询应该给出一个错误,因为c1t2 中不存在。相反,它返回t1. 上述查询的另一个版本delete可能会造成更大的灾难:
delete from t1 where c1 in (select c1 from t2);
Run Code Online (Sandbox Code Playgroud)
当上面的查询只是应该给出错误时,它会删除 t1 中的所有行。
我注意到只有当子查询中的列与外部列具有相同的名称时才会发生这种行为。意义,
select * from t1 where c1 in (select c3 from t2);
Run Code Online (Sandbox Code Playgroud)
将按预期抛出错误:
ERROR 1054 (42S22): Unknown column 'c3' in 'field list'
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我已经在 PostgreSQL 9.6.3 上检查过同样的问题,行为完全相同。对这种奇怪的行为有什么解释吗?
有没有办法找出谁在 Windows 2003 服务器上安装了 SQL 服务器?
我们正在构建一个实时银行平台和应用程序。
我们主要关注的是跨多个数据库服务器的数据的安全性和一致性。我们需要事务,我们不能承受断电和丢失数据的风险(我说的是 MongoDB)。我们的次要关注是架构 - 为我们的应用程序租户用户提供的功能。
我们还想避开大型数据库上的模式更新地狱。我们租户的自定义架构是可选的,但非常可取。
我们是非常重的 AJAX 前端,我们的后端是完整的 nodejs。我们做了很多 JSON 数据处理。
我们应该使用 MySQL 吗?对于我们的案例,是否有任何 noSQL 解决方案(也许是 CouchDB?)?
感谢您抽出宝贵时间回答这个问题!
对于一些测试和开发工作,我们希望能够定期克隆现有的 RedShift 数据库(所有模式和所有数据)。类似于备份还原的东西。
我能找到的最好的方法是创建整个集群的快照,这在目前是不切实际的。
我们确实有用于创建数据库和架构的脚本,但我们没有用于从另一个 AWS RedShfit 数据库填充表的简单/整洁的机制。 (我们发现我们不能使用,INSERT INTO db_new.schema.table SELECT * FROM db_old.schema.table因为不支持跨数据库语法)
有没有人有什么建议?
如果SQL Server数据库的用户只有public在同意server roles且仅用于特定的数据库db_datareader,并public随后试图允许script index as CREATE To在SSMS选项,生成的脚本不正确。
我的意思是,如果索引具有过滤条件,则不会显示该过滤条件
所以对于拥有所有者权限的用户script index as CREATE To将显示
USE [test]
GO
/****** Object: Index [filtered] Script Date: 12/30/2013 18:54:19 ******/
CREATE NONCLUSTERED INDEX [filtered] ON [dbo].[Table_1]
(
[b] ASC
)
WHERE ([Table_1].[b] IS NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
对于只有 …
我想知道是否有任何方法可以在 PostgreSQL 中执行以下操作:
UPDATE cryptotable SET work = work + 'some big hexadecimal number'
Run Code Online (Sandbox Code Playgroud)
其中 work 是一个无符号的 256 位数字。现在我的列是一个字符变化(64)列(十六进制表示),但如果它让我执行上述操作,我很乐意切换到另一种数据类型。
如果 vanilla PostgreSQL 无法实现,是否有可以帮助我的扩展?
(我也将此发布到 pgsql-hackers,因此请查看那里的线程以获取更多想法。)
我必须在 Postgtres 数据库中的一个大表(约 1 亿条记录)上创建一个主键。创建 pkey 的最佳和最快方法是什么?此列是一个序列列,我不想锁定表,因为这是高度事务性的数据库。
postgresql ×3
sql-server ×3
redshift ×2
backup ×1
cryptography ×1
ddl ×1
index ×1
installation ×1
nosql ×1
pgcrypto ×1
restore ×1
schema ×1
ssms ×1
subquery ×1