Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:从VB.NET存储数据_Sql_Sql Server_Vb.net_Stored Procedures_Common Table Expression - Fatal编程技术网

SQL Server:从VB.NET存储数据

SQL Server:从VB.NET存储数据,sql,sql-server,vb.net,stored-procedures,common-table-expression,Sql,Sql Server,Vb.net,Stored Procedures,Common Table Expression,我有个大问题。我必须在SQL Server数据库中存储日期时间和值 我写了一个网站,其中包含一个带有条目的表格 一个条目包含:日期、时间和值 例如: Entry A : -> 01.01.2014 - 07.06.2014 , 00:00 - 07:15 , Value: 450 Entry A : -> 01.01.2014 - 07.06.2014 , 07:30 - 15:30 , Value: 230 Entry A : -> 01.01.2014 - 07.06.201

我有个大问题。我必须在SQL Server数据库中存储日期时间和值

我写了一个网站,其中包含一个带有条目的表格

一个条目包含:日期、时间和值

例如:

Entry A : -> 01.01.2014 - 07.06.2014 , 00:00 - 07:15 , Value: 450 Entry A : -> 01.01.2014 - 07.06.2014 , 07:30 - 15:30 , Value: 230 Entry A : -> 01.01.2014 - 07.06.2014 , 15:45 - 23:45 , Value: 300 Entry B : -> 01.01.2014 - 07.06.2014 , 00:00 - 02:15 , Value: 130 Entry B : -> 01.01.2014 - 07.06.2014 , 02:30 - 10:45 , Value: 250 Entry B : -> 01.01.2014 - 07.06.2014 , 11:00 - 23:45 , Value: 340 Entry C ... 对于范围内的每个datetime,每个步骤在15分钟内存储一个值:

例如,数据库应如下所示:

01.01.2014 00:00:00 | 450 | Entry A 01.01.2014 00:15:00 | 450 | Entry A .. .. 01.01.2014 07:15:00 | 450 | Entry A 01.01.2014 07:30:00 | 230 | Entry A 01.01.2014 07.45:00 | 230 | Entry A .. .. 01.01.2014 15:30:00 | 230 | Entry A 01.01.2014 15:45:00 | 300 | Entry A 01.01.2014 16:00:00 | 300 | Entry A .. .. 01.01.2014 23:45:00 | 300 | Entry A 01.01.2014 07:30:00 | 300 | Entry A .. .. 01.01.2014 07:15:00 | 230 | Entry A 01.01.2014 07:30:00 | 230 | Entry A .. .. 02.01.2014 ... 每个条目和每天都相同,直到结束

我认为问题在于插入太多。五个月以上,每天,每15分钟三次参赛

我写了两个脚本,都在工作。但是保存条目需要很长时间

脚本1:我已经在VB中直接执行了SQL语句

Dim cmd As DbCommand=新SqlCommand cmd.CommandType=Data.CommandType.Text Temp2=DateTime.ParseDateStart++TimeStart Temp3=DateTime.ParseDateBegin++TimeBegin
虽然Temp2伪代码抱歉,我可以告诉你怎么走,但我没有时间编写它

foreach line ...
    date = first date+time
    enddate = second date+time
    while date >= enddate
        insert into db (please use Parameters)
        date increment by 15 minutes

我刚刚又用CTE试过了。下面的代码是我的解决方案,非常有效。 现在我只需要编写一个过程并传递参数

感谢大家的阅读和支持

declare @StDate datetime = '01/01/2013 00:00.000'
declare @Enddate datetime = '07/07/2043 00:00.000'
declare @stime datetime = '00:00:00'
declare @etime datetime = '23:45:00'

declare @value as int = 387
declare @id as int = 999


;with cte as
(
 select DATEADD(MINUTE,DATEDIFF(Minute,0,@stime),0) as Stime
 union all
 select DATEADD(MINUTE,15,Stime) from cte where Stime < @etime

 ), cte2 as (
 select DATEADD(MONTH,DATEDIFF(MONTH,0,@StDate),0) as Sdate 
 union all
 select DATEADD(day,1,SDate) from cte2 where SDate < @Enddate
 ) 

Insert into [dbo].[_DV_Prognose_Werte_Temp](pr_id,prognosen_Nummer,zeitstempel,[time],leistungsprognose,nvv) (select '1','1',  Combined = CAST(SDate AS DATETIME) + CAST(stime AS DATETIME),stime, @value,'2' from cte cross join cte2)
OPTION (maxrecursion 0)

不明白你到底想要什么?在这种情况下,我需要发送30000次以上的查询,我需要找出如何更快地保存数据。在这种情况下,在我存储所有数据之前,网站超时。每天都被划分为不同的时间段,我必须用每天的值存储这些不同的时间段。在这种情况下,从2014年1月1日到2014年6月7日-00:00到07:15,值为400。这意味着,每天-00:00到07:15时钟的值为400。在休息时间段07:30-15:30和15:45-23:45中还有一个值。一步一步地存储所有数据需要很多时间。网站超时了哪一位速度慢?你有分析过吗?此外,您的SQL Server是本地的还是远程的,即网络延迟是一个问题;您有任何聚集索引吗?还有,为什么要尝试在INSERT命令上执行ExecuteReaderr?我通常希望您执行ExecuteOnQuery,因为所写的插入不会向客户端返回任何行。这是一个缓慢的解决方案,例如,从2014年1月1日到2014年6月7日有157天。一个条目有15072个插入项。看,每天都分为不同的时间段。在我的示例中,从00:00-07:15到07:30-15:30和15.45-23:45,这用于每天的乘法条目和乘法值。在最坏的情况下,我有20个条目,范围从半年多到每天被划分为不同的时间范围。这将是超过200000条SQL语句,其中Insert INTO还剩下两个选项:第一:也可以从代码中进行大容量插入,或者以TSQL过程的形式写入。我以MS-SQL服务器的形式读取SQL Server标记。您可以在此处找到它: