RDLC 报表获取参数信息。
foreach (ReportParameterInfo parameterField in LocalReport.GetParameters())
{
parameterNames.Add(parameterField.Name);
}
RDLC 报表获取参数信息。
foreach (ReportParameterInfo parameterField in LocalReport.GetParameters())
{
parameterNames.Add(parameterField.Name);
}
用C#调用C写的一个dll文件, 经常碰到System.AccessViolationException
未处理 System.AccessViolationException
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
以前用过一个很好的数据库比较工具SQL Delta, 后来对SQL 2005 和SQL 2008的支持不是很完善,并且还要在网上找免费版就没在用。 其实 Visual Studio 2010里面就集成有数据库结构比较的功能,可以比较两个数据库的表结构、视图、存储过程、函数等,会把不一致的用颜色标注出来,非常醒目。
Visual Studio不光能比较数据库结构,还可以进行两个数据库的数据比较。
打开Visual Studio,点击菜单 “数据” --> “架构比较”-->"新建架构比较" ,然后设置数据库连接就可以了。
Session是用户级, viewstate是页面级
基本理论:
session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到viewstate里面. 而sesson则只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上. 另外,session在默认情况下20分钟就过期,而viewstate则永远不会过期.
一、数据库触发器
CREATE TRIGGER 禁删与修改表
ON DATABASE
FOR
DROP_TABLE,ALTER_TABLE
AS
PRINT '请不要删除或修改表!'
ROLLBACK TRANSACTION
语法:
Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE STATISTICS statement (DDL Trigger)
CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }
DLL触发器为了响应各种数据定义语言 (DDL) 事件而激发。这些事件主要与以关键字 CREATE、ALTER 和 DROP 开头的 Transact-SQL 语句对应。执行 DDL 式操作的系统存储过程也可以激发 DDL 触发器。
1.了解触发器的作用域
在响应当前数据库或服务器上处理的 Transact-SQL 事件时,可以触发 DDL 触发器。触发器的作用域取决于事件。例如,每当数据库中或服务器实例上发生 CREATE_TABLE 事件时,都会激发为响应 CREATE_TABLE 事件创建的 DDL 触发器。仅当服务器上发生 CREATE_LOGIN 事件时,才能激发为响应 CREATE_LOGIN 事件创建的 DDL 触发器。
在下面的示例中,每当数据库中发生 DROP TABLE 或 ALTER TABLE 事件时,都会激发 DDL 触发器 safety。
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK;
创建数据库触发器:
create trigger prevent_drop_table ON DATABASE FOR DROP_TABLE
AS
RAISERROR('Not allowed to drop tables.', 10, 1)
PRINT 'DROP TABLE attempt in database ' + DB_NAME() + '.'
PRINT CONVERT (nvarchar (1000),EventData())
ROLLBACK
GO
DDL 触发器和 DML 触发器的用处不同。
DML 触发器在 INSERT、UPDATE 和 DELETE 语句上操作,并且有助于在表或视图中修改数据时强制业务规则,扩展数据完整性。
DDL 触发器在 CREATE、ALTER、DROP 和其他 DDL 语句上操作。它们用于执行管理任务,并强制影响数据库的业务规则。它们应用于数据库或服务器中某一类型的所有命令。
可以使用相似的 Transact-SQL 语法创建、修改和删除 DML 触发器和 DDL 触发器,它们还具有其他相似的行为。
一、打开SQL Server Management Studio,在控制台中的SQL Server属性中,有一个常规项,里面有一句产品版本,直接标注着是哪一个补丁包;
二、打开SQLSERVER配置管理器,然后用鼠标左键双击打开属性对话框,然后选择高级选项卡就可以看到SQL的版本信息