我刚刚了解了新的 sp_executesql 存储过程。我喜欢有一种方法可以从 SQL Server 中执行参数化代码。
但是,我想知道在没有任何参数时使用 sp_executesql 存储过程与直接调用 EXEC 之间有什么区别。另外,是否有性能影响?
exec('select * from line_segment')
exec sp_executesql N'select * from line_segment'
Run Code Online (Sandbox Code Playgroud)
另外,2005 年和 2008 年之间是否存在差异,或者它们的处理方式是否相同?
故障转移服务器具有状态(镜像、断开连接、恢复中),主体服务器具有状态(主体、断开连接)。
重新连接这些服务器的过程是什么?
我有一个包含大约 6000 万行的表,我按状态将其划分为 53 个子表。这些表像这样“继承”大表:
CREATE TABLE b2b_ak (LIKE b2b including indexes, CHECK ( state = 'AK') ) INHERITS (b2b8) TABLESPACE B2B;
我的问题是:如果在复制语句完成之前我不在 b2b8 上构建索引,子表是否继承索引?换句话说,我想这样做:
Create b2b8
Create b2b8_ak inherits b2b8
COPY b2b8 FROM bigcsvfile.csv
CREATE INDEX CONCURRENTLY
Run Code Online (Sandbox Code Playgroud)
并让整个事情结果在子表上创建了所有索引。
我是 postgres 的新手,
我在实时服务器上有一个 2000 万行的表 - 我需要删除大部分行但不是全部。我想这样做而不影响访问此表的其他读/写进程(非常频繁)。
我有一种方法可以一次删除大约 100-400K 行块。在每次删除之间,我想让查询休眠 - 以便其他操作可以有机会访问此表。
我有代码,但我相信这个版本,它在查询运行的整个时间(所有睡眠)都锁定表。我怎样才能在进程休眠时真正释放表?谢谢!!
到目前为止我的代码:
CREATE SEQUENCE tmp_sq increment by 1 minvalue 1 maxvalue 53 start with 1;
DO $$
DECLARE
w_counter integer;
BEGIN
w_counter := (SELECT nextval('tmp_sq'));
while w_counter < 53 loop
raise notice 'Value: %', w_counter ;
w_counter := (SELECT nextval('tmp_sq'));
-- this way of breaking up the delete into chunks works for my table because of dates.
delete from table_a where date_part('week',my_date) = w_counter;
raise notice ' …Run Code Online (Sandbox Code Playgroud) 我想在网上商店中创建一个购物车。我有两种设计购物车的方法,但我不知道哪个更好。
解决方案1:创建一个如下表:
以这种方式为每个产品为用户添加新行。
注意UserId 和 ProductId 是唯一的
解决方案2:
使用两个表:购物车,cartItem
这样就为每个用户只在ShoopingcartTable 中创建了一条记录。
你有什么意见?
我正在尝试更改 Windows 2003 服务器上 Oracle 11.2.0.3 安装的服务名称。
在安装过程中,服务名称是用默认域定义的,但我们想摆脱它。
什么到目前为止,我已经做了(什么之前已经工作)的服务名称更改mydb.foo.bar到mydb唯一的:
alter system set service_names = 'mydb' scope = both;
alter database rename global_name to mydb;
Run Code Online (Sandbox Code Playgroud)
这似乎有效:
SQL> 显示参数名称 名称类型值 ------------------------------------- ----------- --- --------------------------- db_name 字符串 mydb db_unique_name 字符串 mydb global_names 布尔值 FALSE instance_name 字符串 mydb service_names 字符串 mydb 查询>
(我从上面的输出中删除了一些不相关的属性)
然后使用alter system register重新注册侦听器。
这显示没有效果,所以我重新启动了数据库和监听器,仍然没有运气。
目前的情况如下:
select name from v$active_services 返回:
SERVICE_ID | 姓名 | 网络名称 -----------+-----------------+----- 1 | SYS$背景 | 2 | SYS$USERS | 3 …
为什么 PostgreSQL 返回 't' 和 'f' 而不是 TRUE 和 FALSE?
该文档本身的建议我们将布尔值或进行比较时使用的真与假,但选择从数据库中的值时,返回不同的价值观。
CREATE TABLE test1 (a boolean, b text);
INSERT INTO test1 VALUES (TRUE, 'sic est');
INSERT INTO test1 VALUES (FALSE, 'non est');
SELECT * FROM test1;
a | b
---+---------
t | sic est
f | non est
Run Code Online (Sandbox Code Playgroud)
这种行为有原因吗?PostgreSQL 社区有没有尝试过改变它?
我试图找到一个很好的替代 SQL Developer 来在 Oracle 实例上执行查询和脚本。
我发现DBeaver是一个有趣的工具,它有很多很棒的功能,但它似乎缺少一个基本要素:以类似批处理的方式从客户端机器的文件系统启动脚本的可能性。
例如,在 SQL Developer 中,我简单地放置了一个名为delta_script.sql的文件,其中包含:
@script1.sql
@script2.sql
@script3.sql
Run Code Online (Sandbox Code Playgroud)
我将它作为脚本执行,软件以正确的顺序执行所有文件(前提是它们与 delta_script.sql 文件位于同一目录中)。
在 DBeaver 上,这不会发生,而是得到[900] ORA-00900:无效的 SQL 语句。.
我怎样才能管理它按预期工作?
我在 delta_script.sql 文件中尝试了以下内容,但没有成功:
他们都给出了同样的错误,所以我认为“@”有问题。我已经在 SQLPlus 中尝试使用我在 SQL Developer 上使用的 synthax 没有错误。
如何像在 Sql Server/Oracle 中那样在 PgAdmin 4 中执行多条语句(按 F5)?
select * from employees;
select * from department;
Run Code Online (Sandbox Code Playgroud)
正如我与 PgAdmin 一起工作的那样,它允许我们每次只执行一个选定的语句或最后一个语句,有什么方法或任何设置可以一起执行多个 dml 语句?
我读到 SQL Server 2017 现在将包含 PowerBI Server。他们还将 SSRS 移动到不同的安装程序,因此它不会打包在原始 SQL Server 安装中。这是否意味着微软最终会尝试弃用 SSRS?我们的团队是否应该尝试在 PowerBI 中构建新报告并转换以前的 SSRS 报告?
sql-server ssrs business-intelligence powerbi sql-server-2017