【SQL Server CE2.0】创建加密的数据库(源代码)

 1 HRESULT  hr = NOERROR;
 2 DBPROPSET dbpropset[2];
 3 DBPROP  dbprop[1]; // Property array to initialize the provider.
 4 DBPROP  sscedbprop[2]; // Property array for SSCE security properties
 5 INT   i = 0;
 6 IDBDataSourceAdmin *pIDBDataSourceAdmin = NULL;
 7 IUnknown   *pIUnknownSession = NULL;
 8 IDBInitialize  *pIDBInitialize = NULL;
 9 // Create an instance of the OLE DB provider.
10 hr = CoCreateInstance(CLSID_SQLSERVERCE_2_0, 0, CLSCTX_INPROC_SERVER,
11  IID_IDBInitialize, (void**)&pIDBInitialize);
12 if(FAILED(hr))
13 {
14  RETAILMSG(1,(TEXT("1==CoCreateInstance: %d /r/n"),GetLastError()));
15  goto CleanExit;
16 }
17 // Initialize property structures.
18 VariantInit(&dbprop[0].vValue);
19 for (i = 0; i < sizeof(sscedbprop) / sizeof(sscedbprop[0]); i++)
20 {
21  VariantInit(&sscedbprop[i].vValue);
22 }
23 // Leo:To create a new database, you must specify the DBPROP_INIT_DATASOURCE property to
24 // specify a name for the database.
25 dbprop[0].dwPropertyID = DBPROP_INIT_DATASOURCE;
26 dbprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
27 dbprop[0].vValue.vt = VT_BSTR;
28 dbprop[0].vValue.bstrVal = SysAllocString(L"Encrypted.sdf");
29 if(NULL == dbprop[0].vValue.bstrVal)
30 {
31  hr = E_OUTOFMEMORY;
32  goto CleanExit;
33 }
34 // Specify the property for encryption.
35 sscedbprop[0].dwPropertyID = DBPROP_SSCE_ENCRYPTDATABASE;
36 sscedbprop[0].dwOptions = DBPROPOPTIONS_REQUIRED;
37 sscedbprop[0].vValue.vt = VT_BOOL;
38 sscedbprop[0].vValue.boolVal = VARIANT_TRUE;
39 // Specify the password.
40 sscedbprop[1].dwPropertyID = DBPROP_SSCE_DBPASSWORD;
41 sscedbprop[1].dwOptions = DBPROPOPTIONS_REQUIRED;
42 sscedbprop[1].vValue.vt = VT_BSTR;
43 sscedbprop[1].vValue.bstrVal = SysAllocString(L"123456"); //密码
44 if(NULL == sscedbprop[1].vValue.bstrVal)
45 {
46  hr = E_OUTOFMEMORY;
47  goto CleanExit;
48 }
49 // Initialize the property sets.
50 dbpropset[0].guidPropertySet = DBPROPSET_DBINIT;
51 dbpropset[0].rgProperties  = dbprop;
52 dbpropset[0].cProperties  = sizeof(dbprop)/sizeof(dbprop[0]);
53 dbpropset[1].guidPropertySet = DBPROPSET_SSCE_DBINIT ;
54 dbpropset[1].rgProperties = sscedbprop;
55 dbpropset[1].cProperties = sizeof(sscedbprop)/sizeof(sscedbprop[0]);
56 hr = pIDBInitialize->QueryInterface(IID_IDBDataSourceAdmin,(void **)&pIDBDataSourceAdmin);
57 if(FAILED(hr))
58 {
59  RETAILMSG(1,(TEXT("1==pIDBInitialize->QueryInterface: %d /r/n"),hr));
60  goto CleanExit;
61 }
62 // Create and initialize the database.
63 hr = pIDBDataSourceAdmin->CreateDataSource(sizeof(dbpropset)/sizeof(dbpropset[0]),
64  dbpropset, NULL, IID_IUnknown, &pIUnknownSession);
65 if(FAILED(hr))
66 {
67  RETAILMSG(1,(TEXT("1==pIDBDataSourceAdmin->CreateDataSource: %d /r/n"),hr));
68  goto CleanExit;
69 }
70 // At this point, the new encrypted database is created.
71 leanExit:
72 VariantClear(&dbprop[0].vValue);
73 SysFreeString(dbprop[0].vValue.bstrVal);
74 for(i = 0;i < sizeof(sscedbprop) / sizeof(sscedbprop[0]);i++)
75 {
76  VariantClear(&sscedbprop[i].vValue);
77 }
78 // Do cleanup tasks here.
79 if(NULL != pIDBDataSourceAdmin)
80 {
81  pIDBDataSourceAdmin->Release();
82  pIDBDataSourceAdmin = NULL;
83 }
84 if(NULL != pIDBInitialize)
85 {
86  pIDBInitialize->Release();
87  pIDBInitialize = NULL;
88 }
89 if(NULL != pIUnknownSession)
90 {
91  pIUnknownSession->Release();
92  pIUnknownSession = NULL;
93 }
94 return;
时间: 2024-10-16 14:51:37

【SQL Server CE2.0】创建加密的数据库(源代码)的相关文章

【SQL Server CE2.0】打开加密的数据库(源代码)

1 HRESULT hr; 2 DBID TableName; // name of table for new constraint 3 DBID ColumnList[1]; // name of column for new constraint 4 DBID ConstraintName; // name of new constraint 5 DBPROP dbprop[1]; 6 DBPROP sscedbprop[2]; // Property array for SSCE sec

sqlserver2008创建数据库 报 Cannot read property is filestream 此属性不可用于sql server 7.0 解决

在创建数据库的时候,报整个错误 Cannot read property is filestream 此属性不可用于sql server 7.0 按照网上的方法  (http://blog.csdn.net/tryfinally/article/details/7207048),在sql配置管理器中,开启filestream  选项, 并且执行 EXEC sp_configure filestream_access_level, 2 RECONFIGURE 问题依然得不到解决. 后来用navic

使用SQL Server Management Studio 创建数据库备份作业

SQL Server 作业无非就是按照规定的时间执行指定的脚本,这里介绍如何用SSMS(SQL Sever 2008)创建作业备份数据库. (0)假设在创建作业之前你所要备份的数据库已经存在:其次,你已经会启动SQL Sever 代理(一般是关闭的) (1)创建SQL Server代理作业 (1.1)新建作业,输出常规信息 如上图:输入作业名称(如:BackupJobTest),这里所有者和类别都是默认的,输入说明(就跟写代码要写注释一样,利人利己) (1.2)设置作业执行步骤 点击左边“选择页

解决SQL Server管理器无法连接远程数据库Error: 1326错误

解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例的问题,错误描述信息摘录如下: An error has occurred while establishing a connection to the server. (provider: Named Pipes Provider, error: 40 – Could not open a con

SQL Server 2008如何创建定期自动备份任务(二)_异地备份

准备: 局域网内的两台电脑.主电脑,备份电脑. 原理:通过数据库维护计划实现. 操作步骤: 一.在备份电脑和主电脑上中创建一个账户liuxh和密码123(自定义) 二.在备份电脑中创建备份用的文件夹backfile并将其共享给指定用户soft1_developer6. 如图: 1.选择用户 2.分配权限 以上上步骤是把文件夹开启共享.       其余步骤同SQL Server 2008如何创建定期自动备份任务,保存路径改成共享目录的文件夹目录.

sql System.Data.SqlClient.SqlError: 无法覆盖文件 &#39;C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF&#39;。数据库 &#39;my1&#39; 正在使用该文件的解决方案

对数据库备份进行还原时遇到“sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF'.数据库 'my1' 正在使用该文件”的问题. 产生原因:对一个数据库备份文件在两个数据库中进行还原时,这个问题的出现主要是因为还原第一个数据库和第二个数据库的名称是一样的,而且在第二个数据库还原时的物理路径时选的路径和第一个数据库还原路径一样. 解决方案:

SQL Server 2005 分区表创建实例

--创建一个分区函数(默认为左边界)CREATE PARTITION FUNCTION PARTFUNC1(INT)AS RANGEFOR VALUES(1000,2000,3000,4000,5000); --创建一个分区方案CREATE PARTITION SCHEME PARTSCHEME1AS PARTITION PARTFUNC1ALL TO ([PRIMARY]); --创建一个分区表CREATE TABLE PARTTABLE1(col1 int,col2 int,col3 int

SQL Server获取索引创建时间&amp;重建时间&amp;重组时间

原文:SQL Server获取索引创建时间&重建时间&重组时间 之前写过一篇博客"SQL Server中是否可以准确获取最后一次索引重建的时间?",里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢?,当时得出的结论,答案是我们无法准确的找到索引的创建时间.最后一次索引重组时间,最后一次索引重建的时间.但是最近看到一篇博客"SQL Server

SQL Server 2012笔记分享-54:数据库文件管理1

(一)添加文件 可以在线执行,不影响数据库使用 ,如图. 添加完成后,如图所示. 也可以通过脚本的形式来添加,如图. (二)删除文件 可以在线执行,不影响数据库使用 . 只有当文件中的实际使用空间为空时才能被成功执行 . (三)移动文件到不同的磁盘路径下 必须先将数据库脱机,将导致数据库暂时不可用 详情参考:http://msdn.microsoft.com/zh-cn/library/ms345483.aspx 若要将移动数据或日志文件作为计划的重定位的一部分,请执行下列步骤: 1. 运行以下