AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-75651

A_V's questions

Martin Hope
A_V
Asked: 2019-02-08 18:33:28 +0800 CST

Postgres CTE 优化与嵌套 json_build_object

  • 3

我正在尝试编写一个查询,该查询从多个表中返回数据并将其聚合到一个嵌套的 JSON 字段中。我觉得这在 SqlServer 上会表现出色,但正如Brent Ozar在这篇文章中所写,Postgres 优化器将 CTE 查询隔离在一起。这迫使我在第一个 CTE 级别使用WHERE语句,否则每次都会加载整个数据集。那和我不太习惯的特定 JSON 函数让我想知道这是否可以更好地执行。

我尝试在没有 CTE 的情况下编写此代码,但不确定如何嵌套子查询。

我在这里缺少任何 postgres 技巧吗?这些指标有效吗?

输出如下所示:

[{
    "item_property_id": 1001010,
    "property_name": "aadb480d8716e52da33ed350b00d6cef",
    "values": [
        "1f64450fae03b127cf95f9b06fca4bca",
        "9a6883b8a87a5028bf7dfc27412c2de8"
    ]
},{
    "item_property_id": 501010,
    "property_name": "e870e8d81e16ee46c75493856b4c6b66",
    "values": [
        "a6bed25b407c515bb8a55f2e239066ec",
        "feb10299fd6408e0d37a8761e334c97a"
    ]
},{
    "item_property_id": 1010,
    "property_name": "f2d7b27c50a059d9337c949c13aa3396",
    "values": [
        "56674c1c3d66c832abf87b436a4fd095",
        "ff88fe69f4438a6277c792faaf485368"
    ]
}]

这是生成模式和测试数据的脚本

--create schema
drop table if exists public.items;
drop table if exists public.items_properties;
drop table if exists public.items_properties_values;
create table public.items(
    item_id integer primary key,
    item_name varchar(250));                      
create table public.items_properties(
    item_property_id serial primary key,
    item_id integer,
    property_name varchar(250));                      
create table public.items_properties_values(
    item_property_value_id serial primary key,
    item_property_id integer,
    property_value varchar(250));
CREATE INDEX items_index
    ON public.items USING btree
    (item_id ASC NULLS LAST,item_name asc nulls last)
    TABLESPACE pg_default; 
CREATE INDEX properties_index
    ON public.items_properties USING btree
    (item_property_id ASC NULLS LAST,item_id asc nulls last,property_name asc nulls last)
    TABLESPACE pg_default;
CREATE INDEX values_index
    ON public.items_properties_values USING btree
    (item_property_value_id ASC NULLS LAST,item_property_id asc nulls last,property_value asc nulls last)
    TABLESPACE pg_default;

--insert dummy data
insert into public.items                        
SELECT generate_series(1,500000),md5(random()::text);

insert into public.items_properties (item_id,property_name)
SELECT item_id,md5(random()::text) from public.items;
insert into public.items_properties (item_id,property_name)
SELECT item_id,md5(random()::text) from public.items;
insert into public.items_properties (item_id,property_name)
SELECT item_id,md5(random()::text) from public.items;


insert into public.items_properties_values (item_property_id,property_value)
select item_property_id,md5(random()::text) from public.items_properties;
insert into public.items_properties_values (item_property_id,property_value)
select item_property_id,md5(random()::text) from public.items_properties;

--Query returned successfully in 22 secs 704 msec.

这是SQL命令

如果没有第三行的 where ,加载大约需要 15 秒。我知道这正在加载数千条记录,所以它可能表现得很好,但我真的很喜欢第二个意见。

with cte_items as (
    select item_id,item_name from public.items  
    --where item_id between 1000 and 1010
),cte_properties as (
    select ip.item_id,ip.item_property_id,ip.property_name from public.items_properties ip
    inner join cte_items i on i.item_id=ip.item_id
),cte_values as (
    select ipv.item_property_value_id,ipv.item_property_id,ipv.property_value from public.items_properties_values ipv
    inner join cte_properties p on ipv.item_property_id=p.item_property_id
)
select i.item_id,i.item_name,json_agg(json_build_object('item_property_id',prop.item_property_id,'property_name',prop.property_name,'values',prop.values))
from cte_items i
left join (
    select cp.item_id,cp.item_property_id,cp.property_name,json_agg(to_json(cv.property_value)) "values"
    from cte_properties cp
    left join ( select val.item_property_id,val.property_value from cte_values val ) cv on cv.item_property_id=cp.item_property_id
    group by cp.item_id,cp.item_property_id,cp.property_name
) prop
on i.item_id=prop.item_id
group by i.item_id,i.item_name
postgresql postgresql-9.6
  • 2 个回答
  • 2479 Views
Martin Hope
A_V
Asked: 2018-11-10 06:29:52 +0800 CST

删除字符串结尾的不可见空字符

  • 3

由于未知原因,我的一个 VARCHAR(1000) 列中的许多字符串都以不可见字符终止。

declare @BrokenString varbinary(max)=0x6D0079002000620075006700670065006400200073007400720069006E00670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F003F00;
select cast(@BrokenString as nvarchar(max)) -- returns 'my bugged string'
select cast(@BrokenString as nvarchar(max)) + ' is bugged' -- still returns 'my bugged string' !

declare @BrokenStringTable table (Brokey nvarchar(max));
insert into @BrokenStringTable
select cast(@BrokenString as nvarchar(max));
select * from @BrokenStringTable for json auto;

该select * from @BrokenStringTable for json auto;语句的输出如下所示:

[{"Brokey":"my bugged string\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000??"}]

如何检测表中的哪些记录包含这些字符?似乎使用 charindex、where+like 和任何其他正常的解决方案都不适用于这些。

sql-server sql-server-2016
  • 2 个回答
  • 4455 Views
Martin Hope
A_V
Asked: 2018-08-22 04:57:28 +0800 CST

Sqlserver IPV6 处理函数或数值转换

  • 3

我正在寻找在 SqlServer 中处理 IPv6 CIDR 地址范围的方法。

我获得的数据格式如下:

Int_IP_Start, Int_IP_End, CIDR_Range, ASN, Name

对于 IPv4

"2868826112","2868826623","170.254.208.0/23","265116","Wave Net"
"2868827136","2868828159","170.254.212.0/22","265381","Furtado & Furtado Provedores LTDA"
"2868828928","2868829183","170.254.219.0/24","264770","Leonir Remussi (KDMNET)"
"2868829184","2868829439","170.254.220.0/24","265373","NET TELECOMUNICACOES LTDA - ME"
"2868829440","2868829695","170.254.221.0/24","265373","NET TELECOMUNICACOES LTDA - ME"
"2868830208","2868831231","170.254.224.0/22","265382","TELECOM LTDA ME"
"2868831232","2868831487","170.254.228.0/24","27951","Media Commerce Partners S.A"

这是相同的,但对于 IPv6

"58568835385568506466387976054061924352","58568835464796668980652313647605874687","2c0f:f288::/32","328039","JSDAAV-ZA-Telecoms-AS"
"58568842991472107835764385034281156608","58568842991473316761583999663455862783","2c0f:f2e8::/48","37182","TERNET"
"58568844892948008178108487279335964672","58568844892949217103928101908510670847","2c0f:f300::/48","37153","Hetzner"
"58568847428249208634567290272742375424","58568847507477371148831627866286325759","2c0f:f320::/32","37126","BELL-TZ"
"58568849329725108976911392517797183488","58568849408953271491175730111341133823","2c0f:f338::/32","327983","Interworks-Wireless-Solutions"

单个 IPv6 的数值表示非常大,因为地址空间相当于 128 位整数。

这里的目标是有一种方法让数据库查询返回 IP 是否是来自 CSV 的存储范围之一的一部分。

对于简单的 IPv4,您可以获取 IP 并将其转换为等效的 INT32。

由于 SqlServer 中没有 INT128 数据类型,我有以下问题:

- 有没有办法创建一个自定义类型来存储 128 位的 bigint?(只需要进行大于或小于运算)

- 有没有办法正确处理 SqlServer 中的 IP 地址范围?

编辑:

这是 IPv6 地址可以表示的最大数字:

    string LongestIp = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff";
    var SerializedIp = IPNetwork.ToBigInteger(IPAddress.Parse(LongestIp));
    Console.WriteLine(SerializedIp.ToString());

此 c# 代码输出 340282366920938463463374607431768211455

试图插入这个

declare @ipv6Decimals table (Ip decimal(38,0));

insert into @ipv6Decimals (Ip) values (58568844892949217103928101908510670847); --this is okay,
--When maximum precision is used, valid values are from - 10^38 +1 through 10^38 - 1
insert into @ipv6Decimals (Ip) values (99999999999999999999999999999999999999); --This is the largest numeric(38,0) will fit
insert into @ipv6Decimals (Ip) values (340282366920938463463374607431768211455);-- This is too large

消息 1007,级别 15,状态 1,第 3 行数字“340282366920938463463374607431768211455”超出了数字表示的范围(最大精度 38)。

sql-server-2016 ipv6
  • 1 个回答
  • 1539 Views
Martin Hope
A_V
Asked: 2017-10-27 05:21:58 +0800 CST

我的索引维护起来太贵了吗?

  • 0

我刚刚索引了一个返回 1.26 亿行的视图。

有一个进程使用此视图通过触发器更新行,这是迄今为止我的数据库中最昂贵的进程。

我正在监控这个新的索引使用 DMV,我强烈地感觉到维护这个索引涉及太多的处理能力来平衡它的有用性。

运行下面的查询,它告诉我每 2-5 秒就有一个用户在该索引上搜索。在同一时间范围内,将有大约 250-1000 个用户更新。由于它是 15 分钟前创建的,因此 USER_SEEKS=386 而 USER_UPDATES=102 876。

是否有一个神奇的比率,您可以放心地说维护这样一个索引是不值得的?

SELECT OBJECT_NAME(S.[OBJECT_ID]) AS [OBJECT NAME], 
       I.[NAME] AS [INDEX NAME], 
       USER_SEEKS, 
       USER_SCANS, 
       USER_LOOKUPS, 
       USER_UPDATES 
FROM   SYS.DM_DB_INDEX_USAGE_STATS AS S 
       INNER JOIN SYS.INDEXES AS I ON I.[OBJECT_ID] = S.[OBJECT_ID] AND I.INDEX_ID = S.INDEX_ID 
WHERE  OBJECTPROPERTY(S.[OBJECT_ID],'IsUserTable') = 1
       AND S.database_id = DB_ID()
       and I.NAME ='<index_name_goes_here>'
sql-server sql-server-2016
  • 1 个回答
  • 103 Views
Martin Hope
A_V
Asked: 2017-09-13 05:22:58 +0800 CST

在 csv 数据上选择不同

  • 1

一个表有 CSV 数据,我想SELECT DISTINCT ID在那个表上做一个,我应该如何进行?

+-----------+
| id        |
+-----------+
| 111,1487  |
+-----------+
| 462       |
+-----------+
| 2492      |
+-----------+
| 3184      |
+-----------+
| 3181,3184 |
+-----------+
| 3181      |
+-----------+
| 440       |
+-----------+
| 1436      |
+-----------+

我有一个我经常使用的函数,它可以将 INT 的 varchar csv 字符串拆分成一个单列表,我使用如下:

SELECT number from INTLIST_TO_TBL('123,234,345,4566')

它运行良好,但在这种情况下我不能使用它,因为有很多行并且在某些情况下它会返回多行。

我是否应该尝试使用插入临时表的游标,然后通过查询该临时表继续下一步?

有人告诉我游标是性能不佳的同义词,这就是为什么我总是在走那条路之前先在这里询问。

sql-server sql-server-2008-r2
  • 1 个回答
  • 1143 Views
Martin Hope
A_V
Asked: 2017-09-02 04:50:39 +0800 CST

JDBC Sqlserver 到弹性搜索:一个输入到不同的输出?

  • 1

我有一个 sqlserver2016 数据库,我想使用 logstash 在 elasticsearch 中建立索引。

这是我的 logstash 配置文件,它有点工作:

input {
jdbc {
jdbc_driver_library => "C:\elastic\Microsoft-JDBC-Driver-6.0-for-SQL-Server\sqljdbc_6.0\enu\jre8\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://10.11.12.13:1433;databaseName=testdb1;integratedSecurity=false;user=ElasticExtractor;password=flyingweisels;"
jdbc_user => "ElasticExtractor"
jdbc_password => "flyingweisels"
statement => "select top 150000 Item_ID itemid,merchant_id merchantid,modelnumber,language_id from items order by Item_Id desc"
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "testdata"
document_type => "testtype"
document_id => "%{itemid}"
}
}

那么这个文件应该做什么,正如配置的那样,在 elasticSearch 中插入 150k 项。在某种程度上,它只进口了其中的三分之一,例如本例中的 62 382。如果我尝试插入 50k,它只会插入大约 20k。这样做有明显的原因吗?

这是当前的执行日志:

[2017-09-01T08:16:31,923][INFO ][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}}
[2017-09-01T08:16:31,927][INFO ][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck_url=>http://localhost:9200/, :path=>"/"}
[2017-09-01T08:16:32,006][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=>"http://localhost:9200/"}
[2017-09-01T08:16:32,007][INFO ][logstash.outputs.elasticsearch] Using mapping template from {:path=>nil}
[2017-09-01T08:16:32,042][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{"template"=>"logstash-*", "version"=>50001, "settings"=>{"index.refresh_interval"=>"5s"}, "mappings"=>{"_default_"=>{"_all"=>{"enabled"=>true, "norms"=>false}, "dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date", "include_in_all"=>false}, "@version"=>{"type"=>"keyword", "include_in_all"=>false}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}}}
[2017-09-01T08:16:32,050][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["//localhost:9200"]}
[2017-09-01T08:16:32,053][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
[2017-09-01T08:16:32,219][INFO ][logstash.pipeline        ] Pipeline main started
[2017-09-01T08:16:32,313][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
[2017-09-01T08:16:32,643][INFO ][logstash.inputs.jdbc     ] (0.050000s) select top 150000 Item_ID itemid,merchant_id merchantid,modelnumber,language from items order by Item_Id desc
[2017-09-01T08:16:49,805][WARN ][logstash.agent           ] stopping pipeline {:id=>"main"}

第二件事是,假设我想从来自此输入的 SQL 服务器插入一行,我可以使用什么插件,以便如果该行具有特定的“merchant_id”,它会进入一个以该 ID 命名的弹性类型。此外,如果它有一种特定的“语言”,它会进入一个以该语言为名称的弹性索引。那可以吗?我是否应该简单地创建多个 Logstash 配置文件,每个任务一个?

elasticsearch
  • 1 个回答
  • 1095 Views
Martin Hope
A_V
Asked: 2017-08-04 06:01:40 +0800 CST

表值函数 VS 存储过程

  • 2

有一个功能:

  • 仅返回 1 行
  • 只有1个参数
  • 在不同的表上有多个连接,每个只返回一个标量值
  • 每次登录 Web 应用程序时只调用一次

它目前是用 c# linq-to-sql 编写的,执行需要 150-300 毫秒。

使用非常简单的语句在 SQL 中重写后SELECT,执行需要 30ms。

现在我想将此选择包含在数据库函数中,这样做的最佳(最快执行)方法是什么?

  1. 制作一个视图,并在每次通话时执行类似的操作 select * from viewXX where id=123
  2. 做一个存储过程
  3. 做一个表值函数

SSMS

在这种情况下我可以利用任何技巧吗?

这是查询的示例

declare @id int=162;
select top 1 i.id, i.name, itd.description,
(select top 1 case when count(*)>0 then '1' else '0' end from category where category_desc=itd.description) "HasCategory",
(select top 1 number from wheels where wheel_item_id=i.id) "WheelCount"
from items i left items_desc itd on i.id=itd.itemid where i.id=@id
sql-server select
  • 1 个回答
  • 1861 Views
Martin Hope
A_V
Asked: 2017-02-15 07:19:09 +0800 CST

当用户对数据库执行读取操作时,备用日志传送失败

  • 0

我有一个使用日志传送的备用配置的 SQLSERVER 2008 实例。

生产服务器每 30 分钟运行一次 LSBACKUP 作业,将其传送到备用服务器,然后备用服务器将 LSRESTORE 传送的日志。

我遇到的问题是,如果任何用户会话正在访问数据库,LSRESTORE 作业将失败,即使他们没有包含任何写操作的活动事务。

数据库处于(Standby / Read-Only)模式中,因此没有可能挂起的写入操作,只需在 SSMS 中开发数据库表就会阻止 LSRESTORE 作业,并显示以下错误日志:

2017-02-14 09:29:22.87  *** Error: Exclusive access could not be obtained because the database is in use.
RESTORE LOG is terminating abnormally.(.Net SqlClient Data Provider) ***

我找到的唯一解决方案是发生这种情况时,我可以将数据库设置为 single_user 并返回到 multi_user 以清除错误。我还可以在恢复之前的一个步骤中将 SQL 命令放入 SQLAGENT 作业中,但它看起来更像是一种破解而不是修复!

ALTER DATABASE [db_name_goes_here] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [db_name_goes_here] SET MULTI_USER

是否可以通过任何方式保护我的备用机免受此问题的影响?

sql-server sql-server-2008
  • 1 个回答
  • 514 Views
Martin Hope
A_V
Asked: 2016-11-11 07:33:40 +0800 CST

更改 DBA_JOBS 的 WHAT 列

  • 2

我正在使用作业来更新物化视图。

我发现如果exec dbms_refresh.refresh(''"<schema>"."<materialized_view_name>"'');未提交作业,作业会自行锁定,我想更改作业的“内容”列以包含提交。

我面临两种可能的解决方案:

解决方案1:更复杂的方法是完全重新创建作业,我想避免

跑SYS.DBMS_JOB.REMOVE(14133); COMMIT;

重新创建整个作业以现在包含提交

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
  ( job       => X 
   ,what      => 'exec dbms_refresh.refresh(''"<schema>"."<materialized_view_name>"'');COMMIT;'
   ,next_date => to_date('11-11-2016 00:00:00','dd/mm/yyyy hh24:mi:ss')
   ,interval  => 'trunc(sysdate)+1   '
   ,no_parse  => FALSE
  );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/

解决方案 2:通过在视图上运行正常的更新语句直接更新 DBA_JOBS 视图

update dba_jobs set what=(
select what from dba_jobs 
where job in ( '1','2','3','<etc>')
)||'COMMIT;'  
where job in ( '1','2','3','<etc>');

有没有比这两个更好的解决方案,解决方案两个可能吗?

我想避免使用解决方案 1,因为我暗示我手头没有视图的代码,这将需要更多时间,另外让我们暗示我有数百个需要修改。

oracle oracle-11g
  • 1 个回答
  • 3996 Views
Martin Hope
A_V
Asked: 2016-10-19 08:06:25 +0800 CST

恢复多个数据库的日志传送的最快方法

  • 2

寻找恢复多个不同步的 SQL Server 备用数据库的最快方法。

  • 服务器 A 是生产服务器,有 50 个配置有LSBACKUP作业的数据库。

  • 服务器 B 是一个备用服务器,有 50 个数据库处于READONLY/STANDBY更新LSCOPY和LSRESTORE作业的模式。

长时间维护后出现以下错误*:

此备份集中的日志从 LSN 5286000000042100001 开始,该日志太新,无法应用于数据库。可以还原包含 LSN 5286000000039400001 的早期日志备份。

显然,找不到所需的 LSN,因此解决此问题的方法是在生产数据库上进行完整备份NORECOVERY并在备用数据库上还原它,然后重新启动还原作业。

这里的问题是一一做是一个漫长而乏味的过程:

解决这个问题的最快方法是什么?我并不是在寻找一种使备份更快的方法,而不是一种使整个备份自动化的方法。


* 我们从企业级降级到标准级,不知何故,原木运输链在此过程中中断了。

sql-server sql-server-2008-r2
  • 2 个回答
  • 1762 Views
Martin Hope
A_V
Asked: 2016-09-23 06:55:00 +0800 CST

EXPDP 快照太旧实时监控

  • 1

在数据泵导出期间引发“快照太旧”的可能错误在整个互联网上都有详细记录,例如:

  • undo_retention 参数太短
  • 重做日志组太小或太少
  • 撤销表空间太小

有没有办法在作业运行时监视这些失败案例?

我正在寻找的解决方案是一个会报告的查询:

  • 快照的撤消表空间使用的总百分比,直到它需要自动扩展或最大化
  • 重做日志使用的总百分比,直到它覆盖自己
  • 快照达到撤消保留的剩余时间

任何执行这些事情的一部分的查询都将受到欢迎。查这类资料需要oracle分析包吗?是否有可能查询这样的事情?

oracle-11g-r2 oracle-12c
  • 1 个回答
  • 1291 Views
Martin Hope
A_V
Asked: 2016-06-24 09:25:32 +0800 CST

修复 SQL Server 2008R2 时缺少 .msi 文件会出错

  • 5

我已经安装了 SQL Server 2008R2 SP1 数据库,我正在尝试使用 2008R2 安装二进制文件对其进行修复。

在修复加载的过程中,窗口突然关闭并给我这个错误信息,有人知道该怎么办吗?到目前为止,我的搜索技巧让我孤身一人。

http://i.stack.imgur.com/KVtM6.png

sql-server sql-server-2008-r2
  • 2 个回答
  • 9810 Views
Martin Hope
A_V
Asked: 2016-05-10 09:37:04 +0800 CST

卡在管理工作室的任务,你如何处理它们?

  • 17

在管理工作室中单击“使数据库脱机”后,如果单击关闭,此消息将保持挂起并且不会关闭。

https://i.imgur.com/KD6AROv.png

在管理工作室中处理此类卡住工作的好方法是什么?你能通过活动监视器杀死他们吗?我应该寻找什么过程阻止这项工作通过并终止它?

sql-server ssms
  • 3 个回答
  • 32835 Views
Martin Hope
A_V
Asked: 2016-05-04 07:17:26 +0800 CST

使用 sqlcmd 监视 sqlserver 是否从远程服务器启动

  • 3

我想监视我的 sqlserver 是否来自远程机器。

我目前使用 sqlcmd 发送一个简单的“select @@version”查询,然后验证该查询是否返回了预期的文本部分:

sqlcmd -S np:\\<servername>\pipe\sql\query -i version.sql | findstr /I "expected string"

然后我继续根据此事件验证条件。

有没有更好的方法来监视数据库启动事件和数据库关闭事件?

谢谢

sql-server sqlcmd
  • 1 个回答
  • 80 Views
Martin Hope
A_V
Asked: 2016-03-23 11:39:47 +0800 CST

简单恢复中的数据库以节省空间

  • 1

这个旧的 SQL Server 2000 实例有一个 14Gb 的数据磁盘和一个 30Gb 的备份磁盘。

尽管它很旧,但仍有大量用户在进行交易,因此该服务器上唯一数据库的日志文件每天都会填满数据驱动器。

我想我会把它放在简单的恢复中并刷新事务日志,但我想知道它会产生什么影响。

没有 T 日志,您不能使用备份恢复到完整备份时间以外的任何其他时间点,对吗?在对数据库进行此类更改时,我应该注意除此之外最重要的影响是什么?当我不生成 t-logs 时,除了丢失一天的数据(它每天备份到磁带)之外还有什么可能发生?

提前致谢

sql-server sql-server-2000
  • 2 个回答
  • 670 Views
Martin Hope
A_V
Asked: 2015-12-30 08:35:44 +0800 CST

范式定义

  • 0

我很难在网上找到正常形式的直接定义。

我不想要任何示例或隐喻,只是以一种很好的格式定义了每种形式!我相信有超过 4 种正常形式,所以如果您能提供额外的信息,我们将不胜感激。

请填写我发现的任何遗漏信息或以更好的格式列出:

1FN:

  • 每个单元格都是单值的
  • 列中的条目必须属于同一类型
  • 行必须唯一标识

2FN:

  • 所有属性都必须依赖于键

3FN:

  • 行必须只能通过键唯一标识

4FN:

  • 没有多值依赖
normalization
  • 2 个回答
  • 741 Views
Martin Hope
A_V
Asked: 2015-11-24 08:46:09 +0800 CST

SQL Server - 无法删除空闲作业

  • 5

目前,我正在将服务器从一家公司转移到另一家公司。

他们希望将 SQL Server 安装在服务器上,因此我们正在清除所有数据库、维护计划和作业。

我正在尝试删除一堆 SQL Server 代理作业,但即使它们被禁用,它们仍处于“空闲”模式,因此在尝试删除它们时会引发以下错误:

Job 的删除失败job_name.Subplan_1。( Microsoft.SqlServer.Smo)

执行 Transact-SQL 语句或批处理时发生异常。( Microsoft.SqlServer.ConnectionInfo)

该DELETE语句与REFERENCE约束冲突FK_subplan_job_id。冲突发生在数据库“msdb”、表dbo.sysmaintplan_subplans、列job_id中。

该语句已终止。(Microsoft SQL Server,错误:547)

如何从作业中删除 IDLE 状态以便删除通过?

sql-server sql-server-2005
  • 2 个回答
  • 8826 Views
Martin Hope
A_V
Asked: 2015-09-29 05:31:40 +0800 CST

如何用退格键擦除 sqlplus 中的内容?

  • 3

使用 SQL*PLUS,我无法在行命令期间使用退格按钮擦除内容。

当我按退格键时,它不是擦除而是写 ^H

有没有办法配置退格键使其按预期工作?

oracle oracle-11g-r2
  • 2 个回答
  • 9197 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve