标签: sql-server-2012

在SSIS 2012中动态设置脚本任务代码

在我的应用程序中,动态创建脚本任务.

在SQL Server 2008的SSIS实现中,以下方法工作正常.

    private void SetSourceCode(ScriptTask scriptTask, string code, string codeName)
    {
        string fileName = "ScriptMain.vb";
        string language = "VisualBasic";
        string proj = ".vbproj";

        scriptTask.ScriptLanguage = VSTAScriptLanguages.GetDisplayName(language);

        scriptTask.ScriptingEngine.InitNewScript(language,
        scriptTask.ScriptProjectName, proj);

        scriptTask.ScriptingEngine.ShowDesigner(false);
        scriptTask.ScriptingEngine.AddCodeFile(fileName, code);

        if (!scriptTask.ScriptingEngine.Build())
            throw new Exception("Failed to build vb script code: " + codeName);
        scriptTask.ScriptingEngine.SaveScriptToStorage();
        if (!scriptTask.ScriptingEngine.CloseIDE(false))
        {
            throw new Exception("Unable to close Scripting engine.");
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何将此代码迁移到SQL Server 2012,因为从SQL Server 2012 dll-s(程序集)中删除了以下方法:

  • InitNewScript
  • AddProjectReference
  • AddCodeFile
  • SaveScriptToStorage
  • CloseIDE
  • 建立
  • ShowDesigner

通常,如何在SQL Server 2012中动态设置脚本任务的源代码?

c# migration ssis sql-server-2012

18
推荐指数
1
解决办法
3705
查看次数

SSIS:我没有看到包配置向导

使用SQLServer 2012 Enterprise时,在"控制流"选项卡中右键单击时,我在SSIS中看不到"包配置向导".我可以看到所有其他项目(日志,数字签名......).

以下是有关我的安装的信息:

Microsoft Visual Studio 2010
Version 10.0.40219.1 SP1Rel
Microsoft .NET Framework
Version 4.0.30319 SP1Rel
Professional

SQL Server Analysis Services   
Concepteur Microsoft SQL Server Analysis Services 
Version 11.0.2100.60

SQL Server Integration Services   
Concepteur Microsoft SQL Server Integration Services
Version 11.0.2100.60

SQL Server Reporting Services   
Concepteurs Microsoft SQL Server Reporting Services
Version 11.0.2100.60
Run Code Online (Sandbox Code Playgroud)

ssis sql-server-2012

17
推荐指数
2
解决办法
6万
查看次数

是否概述了所有SQL Server 2012错误代码?

SQLGetDiagRec返回本机错误代码.是否有任何概述SQL Server 2012的错误代码?我在MSDN上找不到任何东西.

sql-server odbc c++-cli sql-server-2012

17
推荐指数
3
解决办法
3万
查看次数

查询所有表数据和索引压缩

有没有人碰巧有一个通用的SQL语句,它会列出数据库中的所有表和索引,以及它们当前的压缩设置,对于每个分区?

谢谢.

编辑:这是我尝试查询表时所得到的,但我不确定连接是否正确(我得到重复,这似乎是由索引的存在引起的)

SELECT [t].[name], [p].[partition_number], [p].[data_compression_desc]
FROM [sys].[partitions] AS [p]
INNER JOIN sys.tables AS [t] ON [t].[object_id] = [p].[object_id]
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

17
推荐指数
4
解决办法
3万
查看次数

等待数据库引擎恢复句柄失败!! SQL Server 2012安装

有人可以指导我如何克服以下错误.我正在尝试在我的win7 32位系统上安装SQL Server 2012 Express.我在这个系统中安装了SQL Server 2008 R2 32位,这是由前一个用户删除的(这是我正在使用的官方系统(笔记本电脑)).

以下是安装失败后生成的日志文件:

Overall summary:
  Final result:                  Failed: see details below
  Exit code (Decimal):           -2061893607
  Start time:                    2013-07-12 15:43:20
  End time:                      2013-07-12 15:55:46
  Requested action:              Install

Setup completed with required actions for features.
Troubleshooting information for those features:
  Next step for SQLEngine:       Use the following information to resolve the error, uninstall this feature, and then run the setup process again.


Machine Properties:
  Machine name:                  FSLTECYOUBRAJ
  Machine processor count:       4
  OS version:                    Windows 7 …
Run Code Online (Sandbox Code Playgroud)

sql-server-2012 sql-server-2012-express

17
推荐指数
1
解决办法
4万
查看次数

SQL Server:datediff函数在使用MILLISECOND时导致溢出

我有以下查询:

select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,我收到错误:"datediff函数导致溢出.分隔两个日期/时间实例的日期部分的数量太大.尝试使用具有不太精确的日期部分的datediff."

当我将查询更改为以下时,它工作正常:

select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Run Code Online (Sandbox Code Playgroud)

问题是我真的需要MILLISECONDS.

sql-server date-difference sql-server-2012

17
推荐指数
4
解决办法
4万
查看次数

计算表中连续出现的值的数量

我在桌子下面

create table #t (Id int, Name char)

insert into #t values
(1, 'A'),
(2, 'A'),
(3, 'B'),
(4, 'B'),
(5, 'B'),
(6, 'B'),
(7, 'C'),
(8, 'B'),
(9, 'B')
Run Code Online (Sandbox Code Playgroud)

我想在name列中计算连续值

+------+------------+
| Name | Repetition |
+------+------------+
| A    |          2 |
| B    |          4 |
| C    |          1 |
| B    |          2 |
+------+------------+
Run Code Online (Sandbox Code Playgroud)

我尝试过的最好的事情是:

select Name
, COUNT(*) over (partition by Name order by Id) AS Repetition
from #t
order by Id
Run Code Online (Sandbox Code Playgroud)

但它没有给我预期的结果

t-sql sql-server aggregation sql-server-2012

17
推荐指数
2
解决办法
1万
查看次数

为SQL Server 2012获取两次差异

的背景:

我试图确定客户在特定房间花费的时间长度.每个客户都可以通过a识别CustomerID,当他们访问时,他们被分配了一个VisitNumber.例如,如果客户今天访问他们会得到一个VisitNumber说111111.然后他们将离开并在下周回来,并将有一个VisitNumber111112.

当客户第一次访问时,他们最初没有被分配房间,并且当他们最终被分配到他们的指定房间时,将条目写入数据库.CurrentRoom因为他们还没有房间,所以会是空白的,这NewRoom是他们搬进去的房间.

此条目将记录为事件1(客户从无房间移动到房间),时间是交易发生的时间.如果客户将来在其现有停留期间被移动,将被记录为事件9(客户从一个房间移动到另一个房间),并且还将记录CurrentRoom&*NewRoom值.

问题

我已经设法从上一行和下一行的时间使用LAGLEAD获得时间,然后计算两次之间的差异,这给了我客户在该特定房间花费的时间长度.

使用LAG时的问题是它获取的是先前的值,在某些情况下可能是来自完全不同的客户的值.我想获取特定和当前的LAGLEAD值,然后计算出值之间的差异,以找出该客户在一个房间中花了多长时间.CustomerIDVisitNumber

演示数据:

CREATE TABLE #beds
(
    [id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
     [User] [nvarchar](50) NULL,
    [CustomerID] [nvarchar](50) NULL,
     [Area] [nchar](10) NULL,
    [Event] [nvarchar](50) NULL,
    [VisitNumber] [nvarchar](50) NULL,
    [Time] [datetime] NULL,
     [CurrentRoom] [nvarchar](50) NULL,
     [NewRoom] [nvarchar](50) NULL
)
GO

INSERT INTO #beds ([User],[CustomerID],[Area],[Event],[VisitNumber],[Time],[CurrentRoom],[NewRoom])
VALUES ('00001','C11111111','Area1',2,111111111,'2017-03-22 11:05:44.360','B22','B44'), …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2012

17
推荐指数
1
解决办法
392
查看次数

查询以显示事务表中的已用信用

我正在使用一个包含信用交易的表格,我想要显示销售时花费的信用额度.

在表中:

  • Credits由实体使用唯一实体代码添加(记录在列中GivenByUserCode)
  • 信用额度总是有这样的代码.
  • 花费的积分总是具有负值.
  • 花费的信用将不具有实体代码(值为GivenByUserCodeis null).

如果用户2018-01-02在报表上进行购买,则使用上述数据作为示例,应显示源自的所有这些信用BM01.增加的复杂性在于购买可以分为多个添加,请参阅购买2018-02-03分为3个添加.

我认为解决方案将与使用cteover有关,但我没有使用这些的经验.我确实在SqlServerCentral上发现了类似(不相同)的问题.

任何帮助/方向将是最受欢迎的.


输入和DDL

DECLARE @CreditLogs TABLE(CreditLogId int not null identity(1,1), Credits INT NOT NULL, OccurredOn DATETIME2(7) NOT NULL, GivenByUserCode VARCHAR(100) NULL)

INSERT INTO @CreditLogs (Credits, OccurredOn, GivenByUserCode) VALUES
  (10,  '2018-01-01', 'BM01')
, (10,  '2018-01-01', 'BM01')
, (-10, '2018-01-02', NULL)
, (-5,  '2018-01-04', NULL)
, (5,   '2018-02-01', 'SP99')
, (40,  '2018-02-02', 'BM02')
, (-40, '2018-02-03', …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

17
推荐指数
2
解决办法
422
查看次数

SQL Stairstep查询

我需要一些帮助来生成一个MS SQL 2012查询,该查询将匹配所需的阶梯输出.行按一个日期范围(帐户提交日期月份)汇总数据,列按另一个日期范围(付款日期月份)汇总

表1:帐户跟踪为集合放置的帐户.

CREATE TABLE [dbo].[Accounts](
    [AccountID] [nchar](10) NOT NULL,
    [SubmissionDate] [date] NOT NULL,
    [Amount] [money] NOT NULL,
CONSTRAINT [PK_Accounts] PRIMARY KEY CLUSTERED (AccountID ASC))

INSERT INTO [dbo].[Accounts] VALUES ('1000', '2012-01-01', 1999.00)
INSERT INTO [dbo].[Accounts] VALUES ('1001', '2012-01-02', 100.00)
INSERT INTO [dbo].[Accounts] VALUES ('1002', '2012-02-05', 350.00)
INSERT INTO [dbo].[Accounts] VALUES ('1003', '2012-03-01', 625.00)
INSERT INTO [dbo].[Accounts] VALUES ('1004', '2012-03-10', 50.00)
INSERT INTO [dbo].[Accounts] VALUES ('1005', '2012-03-10', 10.00)
Run Code Online (Sandbox Code Playgroud)

表2:Trans跟踪付款

CREATE TABLE [dbo].[Trans](
    [TranID] [int] IDENTITY(1,1) NOT …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

16
推荐指数
2
解决办法
563
查看次数