情况如下:
过程1创建临时表(#MYTABLE)并调用过程2.过程2还尝试创建具有不同列的#MYTABLE.当过程2尝试将数据插入#MYTABLE时,会发生错误,抱怨"列名无效".我有两个问题:
1)在程序2中创建#MYTABLE时,系统是否应该抱怨?我理解为什么它不能在编译时反对,但在运行时我会发现错误.
2)鉴于它没有抱怨创建,事实上当您从过程2中的#MYTABLE中进行SELECT时,您会看到新列,为什么它会抱怨INSERT?
下面是代码.取消注释INSERT语句将得到错误.
(我知道很多方法可以解决这个问题,因此我不需要对此做出回应.我只是想了解发生了什么.)
IF OBJECT_ID(N'dbo.MYPROC1', N'P') IS NOT NULL
DROP PROCEDURE dbo.MYPROC1;
GO
CREATE PROCEDURE dbo.MYPROC1
AS
CREATE TABLE dbo.#MYTABLE ( Name VARCHAR(256) );
SELECT
'DO NOTHING 1' AS TABLENAME;
EXEC dbo.MYPROC2;
GO
IF OBJECT_ID(N'dbo.MYPROC2', N'P') IS NOT NULL
DROP PROCEDURE dbo.MYPROC2;
GO
CREATE PROCEDURE dbo.MYPROC2
AS
SELECT
'INSIDE PROC 2 BEFOREHAND' AS TABLENAME
,*
FROM
dbo.#MYTABLE;
CREATE TABLE dbo.#MYTABLE
(
Name VARCHAR(256)
,LastName VARCHAR(256)
);
--INSERT INTO dbo.#MYTABLE
-- ( Name, LastName )
-- SELECT
-- …Run Code Online (Sandbox Code Playgroud) SSIS中有5种不同类型的日志记录
我处于生产环境中,开发人员无法访问生产系统.
哪种记录方法应该是我选择的毒药,为什么?
我正在为我的仓库创建一个日历表.我将使用它作为所有日期字段的外键.
下面显示的代码创建表并填充它.我能够弄清楚如何找到阵亡将士纪念日(5月的最后一个星期一)和劳动节(9月的第一个星期一).
SET NOCOUNT ON
DROP Table dbo.Calendar
GO
Create Table dbo.Calendar
(
CalendarId Integer NOT NULL,
DateValue Date NOT NULL,
DayNumberOfWeek Integer NOT NULL,
NameOfDay VarChar (10) NOT NULL,
NameOfMonth VarChar (10) NOT NULL,
WeekOfYear Integer NOT NULL,
JulianDay Integer NOT NULL,
USAIsBankHoliday Bit NOT NULL,
USADayName VarChar (100) NULL,
)
ALTER TABLE dbo.Calendar ADD CONSTRAINT
DF_Calendar_USAIsBankHoliday DEFAULT 0 FOR USAIsBankHoliday
GO
ALTER TABLE dbo.Calendar ADD CONSTRAINT
DF_Calendar_USADayName DEFAULT '' FOR USADayName
GO
Declare @StartDate DateTime = '01/01/2000'
Declare …Run Code Online (Sandbox Code Playgroud) SQL Server 2008的Visual Studio 2008数据库项目
该项目具有预部署和后部署SQL脚本的占位符.他们工作 - 好吧,大多数时候反正.
该项目有一个Always-Recreate-Database选项:删除现有数据库,每次都创建一个新的热门数据库.
当我部署我的数据库时,整个SQL脚本被放在一起并执行.
我的数据库用于复制,作为部署后脚本的一部分,我将服务器指定为分发,创建复制并向其添加文章.
因此,我必须关闭复制.而这个合理的地方就是预部署.
VS2008很快就擦掉了脸上露出的笑容.如果选中了Always-Recreate-Database,那么它会删除脚本并重新创建数据库,然后放置我的预部署脚本,然后放置其他所有内容.
有没有办法让我更改数据库项目的模板,以便在任何部署发生之前执行预部署SQL脚本.
可能重复:
VB使用冒号将两个语句放在同一行上
我在Excel VBA中有以下声明
Public Const cdbArea = 1: Public Const cdbDist = 2: Public Const cdbChange1 = 4: Public Const cdbChange2 = 5: Public Const cdbTR = 5:
Public Const crbArea = 1: Public Const crbDist = 2: Public Const crbTerr = 3: Public Const crbChange1 = 4: Public Const crbTR = 5:
Public Const cdbWeek1 = 4
Run Code Online (Sandbox Code Playgroud)
乍一看,Colons看起来像分隔符,但我以前从未使用过这种语法.
冒号是什么?
有没有办法通过应用适当的 XSD 来使用 Visual Studio 以表格结构查看 XML 数据?
我可以轻松使用其他工具来实现此目的吗?PS:我需要这个一次性使用。
我需要从datetime开始的日期部分.格式为"dd-mm-yyyy"
我试过了
查询:
select Convert(varchar(11), getdate(),101)
输出:
01/11/2011
询问
SELECT cast(floor(cast(GETDATE() as float)) as datetime)
产量
2011-01-11 00:00:00.000
查询:
SELECT
CONVERT(VARCHAR(MAX),DATENAME(DD,GETDATE())) + '-' +
CONVERT(VARCHAR(MAX),DATEPART(MONTH,GETDATE())) + '-' +
CONVERT(VARCHAR(MAX),DATENAME(YYYY,GETDATE())) `
Run Code Online (Sandbox Code Playgroud)
输出:
11-1-2011 即"dm-yyyy"
我需要"dd-mm-yyyy"格式的输出.
执行以下脚本,将表创建并填充到dev数据库中.
SET NOCOUNT ON
Drop Table dbo.Region
GO
CREATE TABLE dbo.Region(
RegionId int IDENTITY(1,1),
RegionName varchar(100) NOT NULL
)
GO
INSERT INTO dbo.Region (RegionName)
VALUES ('Region One'),
('Region Two');
GO
SELECT * FROM dbo.Region
Run Code Online (Sandbox Code Playgroud)
你可以从一个表现良好的身份字段中得到的结果.
RegionId RegionName
----------- ------------------
1 Region One
2 Region Two
Run Code Online (Sandbox Code Playgroud)
现在让我们在Identity列中强制使用几个值.
SET NOCOUNT ON
Drop Table dbo.Region
GO
CREATE TABLE dbo.Region(
RegionId int IDENTITY(1,1),
RegionName varchar(100) NOT NULL
)
GO
SET IDENTITY_INSERT dbo.Region ON;
INSERT INTO dbo.Region (RegionId, RegionName)
VALUES (-9, 'Unknown'),
(-99, 'N/A');
SET …Run Code Online (Sandbox Code Playgroud) 这是我在处理SSIS多维数据集后得到的错误消息
Errors in the back-end database access module. The size specified for a binding was too small, resulting in one or more column values being truncated.
但是,它没有给出任何列绑定太小的指示.
我该如何调试?