GVKun编程网logo

SQLServer 扫盲(sql server?)

4

如果您对SQLServer扫盲和sqlserver?感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解SQLServer扫盲的各种细节,并对sqlserver?进行深入的分析,此外还有关于C#Sq

如果您对SQLServer 扫盲sql server?感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解SQLServer 扫盲的各种细节,并对sql server?进行深入的分析,此外还有关于C# SqlServer操作辅助类(SqlServerHelper.cs)、C#访问SqlServer的工具类SqlServerHelper、DBSyncer 中间件 SQLServer同步SQLServer 配置教程、HmailServer+mysql | SqlServer2008 安装教程的实用技巧。

本文目录一览:

SQLServer 扫盲(sql server?)

SQLServer 扫盲(sql server?)

  谨以本文记录本人成长历程,并分享给各位sql Server数据库管理系统使用者。本系列包含个人认为一个DBA应该具有的各项素质,系列文章将以下面列表展示,将持续更新,敬请留意及指导,谢谢。下列文章具有一定的优先级,但是并不代表完全不可逆,根据工作需要,可能不会按照顺序来写,已写部分可以通过下面超链接点击:


     本系列为入门级,不会介绍过于深入的知识。为防止不道德转载(特别是 红黑联盟,把我原文地址删掉,其他照搬,无节操无道德),尽可能打上水印和加上原文地址,读者看的不爽请见谅。
原文地址: http://www.voidcn.com/article/p-wxixvnpq-ov.html

第一篇:DBA第一要务——备份还原

本篇包含下面主题:

    1. SQL Server备份基础
    2. 完整备份
    3. 差异备份
    4. 日志备份
    5. 其他类型备份
    6. 还原基础
    7. 完整恢复
    8. 差异恢复
    9. 日志恢复
    10. 其他类型恢复
    11. 优化备份还原
    12. 灾难恢复
    13. 高可用下的备份
    14. 高可用下的还原
    15. 备份常见问题

 

第二篇:DBA的职责——安全性

    1. 安全性简介
    2. 网络和服务器安全(sql Server之外)
    3. 数据加密
    4. sql注入
    5. 审计
    6. 高可用下的安全性
    7. 实例安全性、sql密码
    8. 备份、文件安全性
    9. 服务器权限
    10. 检查清单
    11. SQL Server 2012 Security CookBook译文 

第三篇:中高级DBA技能——高可用

复制(Replication)

    1. 复制(1)——SQLServer 复制简介
    2. 复制(2)——事务复制实操
    3. 复制(3)——合并复制实操
    4. 复制(4)——快照复制实操
    5. 复制(5)——事务复制中的发布者(Publisher)
    6. 复制(6)——分发者(Distributor)
    7. 复制(7)——事务复制中的订阅者(Subscriber)
    8. 复制(8)——事务复制工作原理
    9. 复制(9)——合并复制工作原理
    10. 复制(10)——日常错误
    11. 复制(11)——管理复制
    12. 复制(12)——监控复制
    13. 复制(13)——优化复制
    14. 复制(14)——注意事项

镜像(Mirroring)

  1. SQL Server镜像简介
  2. 计划搭建SQL Server镜像
  3. 配置SQL Server镜像——域环境
  4. 配置SQL Server镜像——非域环境
  5. SQL Server镜像日常维护
  6. 监控SQL Server镜像
  7. sql Server镜像故障转移
  8. sql Server镜像及其他高可用搭配

日志传送(Log Shipping)

 

故障转移集群(Cluster)

 

AlwaysOn

第四篇:DBA基本技能——监控

第五篇:sql Server 安装、配置、升级及迁移

第六篇:sql Server日常管理

第七篇:DBA工作文档化

第八篇:高级DBA职责——数据库建模、设计

第九篇:大数据库管理——数据归档

第十篇:高级DBA职责——项目管理

第十一篇:数据库培训

第十二篇:数据库应用开发

第十三篇:BI、DataWareHouse

第十四篇:新技术

C# SqlServer操作辅助类(SqlServerHelper.cs)

C# SqlServer操作辅助类(SqlServerHelper.cs)

开发小型软件过程中,为了节约开发时间,数据库操作的代码自己都封装了。上篇介绍了sqlcehelper这个关于操作本地数据库sdf的例子。现在介绍一下在sqlserver中的代码。 因为Sqlserver数据库有多种登录方式,所以在构造函数中: #region [构造函数] /// summar

开发小型软件过程中,为了节约开发时间,数据库操作的代码自己都封装了。上篇介绍了sqlcehelper这个关于操作本地数据库sdf的例子。现在介绍一下在sqlserver中的代码。

因为Sqlserver数据库有多种登录方式,所以在构造函数中:

  <span>#region</span>[构造函数]
        <span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span>
        <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> ConStr, <span>int</span><span> TimeOut)
        {
            ConnectString </span>=<span> ConStr;
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>=<span> TimeOut;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span><span> ConStr)
        {
            ConnectString </span>=<span> ConStr;
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>= <span>30</span><span>;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span>
        <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span>
        <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span>
        <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span> Pwd,<span>int</span><span> TimeOut)
        {
            ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>=<span> TimeOut;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span>
        <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span>
        <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span><span> Pwd)
        {
            ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>= <span>30</span><span>;          
        }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span>
        <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span> isLocal,<span>int</span><span> TimeOut)
        {
            </span><span>if</span> (!<span>isLocal)
            {
                </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>));
            }
            connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>=<span> TimeOut;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span><span> isLocal)
        {
              </span><span>if</span> (!<span>isLocal)
            {
                </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>));
            }
            connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>= <span>30</span><span>;
        }
        </span><span>#endregion</span>
登录后复制

这样,可以方便地构造出自己的连接字符串。

同时这里用到几个比较有用的有关数据库服务器及数据库结构的函数。比如查询局域网中所有数据库实例,获取目标实例所有数据库,获取指定数据库的所有表,获取指定表所有行:

C# SqlServer操作辅助类(SqlServerHelper.cs)C# SqlServer操作辅助类(SqlServerHelper.cs)View Code

 <span>#region</span> 供使用API方式时使用<span>
        [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span><span>)]
        </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span> SQLAllocHandle(<span>short</span> hType, IntPtr inputHandle, <span>out</span><span> IntPtr outputHandle);
        [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span><span>)]
        </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span> SQLSetEnvAttr(IntPtr henv, <span>int</span> attribute, IntPtr valuePtr, <span>int</span><span> strLength);
        [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span><span>)]
        </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span> SQLFreeHandle(<span>short</span><span> hType, IntPtr handle);
        [DllImport(</span><span>"</span><span>odbc32.dll</span><span>"</span>, CharSet =<span> System.Runtime.InteropServices.CharSet.Ansi)]
        </span><span>private</span> <span>static</span> <span>extern</span> <span>short</span><span> SQLBrowseConnect(IntPtr hconn, System.Text.StringBuilder inString,
            </span><span>short</span> inStringLength, System.Text.StringBuilder outString, <span>short</span><span> outStringLength,
            </span><span>out</span> <span>short</span><span> outLengthNeeded);

        </span><span>private</span> <span>const</span> <span>short</span> SQL_HANDLE_ENV = <span>1</span><span>;
        </span><span>private</span> <span>const</span> <span>short</span> SQL_HANDLE_DBC = <span>2</span><span>;
        </span><span>private</span> <span>const</span> <span>int</span> SQL_ATTR_ODBC_VERSION = <span>200</span><span>;
        </span><span>private</span> <span>const</span> <span>int</span> SQL_OV_ODBC3 = <span>3</span><span>;
        </span><span>private</span> <span>const</span> <span>short</span> SQL_SUCCESS = <span>0</span><span>;
        </span><span>private</span> <span>const</span> <span>short</span> SQL_NEED_DATA = <span>99</span><span>;
        </span><span>private</span> <span>const</span> <span>short</span> DEFAULT_RESULT_SIZE = <span>1024</span><span>;

        </span><span>private</span> <span>const</span> <span>string</span> SQL_DRIVER_STR = <span>"</span><span>DRIVER=SQL SERVER</span><span>"</span><span>;
        </span><span>#endregion</span>
        <span>///</span> <span><summary></summary></span>
        <span>///</span><span> 获取网内的数据库服务器名称(API方式)
        </span><span>///</span> <span></span>
        <span>///</span> <span><returns></returns></span><span>服务器名称数组</span><span></span>
        <span>public</span> <span>static</span> <span>string</span><span>[] GetServers()
        {
            </span><span>string</span> list = <span>string</span><span>.Empty;
            IntPtr henv </span>=<span> IntPtr.Zero;
            IntPtr hconn </span>=<span> IntPtr.Zero;
            System.Text.StringBuilder inString </span>= <span>new</span><span> System.Text.StringBuilder(SQL_DRIVER_STR);
            System.Text.StringBuilder outString </span>= <span>new</span><span> System.Text.StringBuilder(DEFAULT_RESULT_SIZE);
            </span><span>short</span> inStringLength = (<span>short</span><span>)inString.Length;
            </span><span>short</span> lenNeeded = <span>0</span><span>;
            </span><span>try</span><span>
            {
                </span><span>if</span> (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_ENV, henv, <span>out</span><span> henv))
                {
                    </span><span>if</span> (SQL_SUCCESS == SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (IntPtr)SQL_OV_ODBC3, <span>0</span><span>))
                    {
                        </span><span>if</span> (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_DBC, henv, <span>out</span><span> hconn))
                        {

                            </span><span>if</span> (SQL_NEED_DATA ==<span> SQLBrowseConnect(hconn, inString, inStringLength, outString,
                                 DEFAULT_RESULT_SIZE, </span><span>out</span><span> lenNeeded))
                            {
                                </span><span>if</span> (DEFAULT_RESULT_SIZE  lenNeeded)
                                {
                                    outString.Capacity =<span> lenNeeded;
                                    </span><span>if</span> (SQL_NEED_DATA !=<span> SQLBrowseConnect(hconn, inString, inStringLength, outString,
                                         lenNeeded, </span><span>out</span><span> lenNeeded))
                                    {
                                        </span><span>throw</span> <span>new</span> ApplicationException(<span>"</span><span>Unabled to aquire SQL Servers from ODBC driver.</span><span>"</span><span>);
                                    }
                                }
                                list </span>=<span> outString.ToString();
                                </span><span>int</span> start = list.IndexOf(<span>"</span><span>{</span><span>"</span>) + <span>1</span><span>;
                                </span><span>int</span> len = list.IndexOf(<span>"</span><span>}</span><span>"</span>) -<span> start;
                                </span><span>if</span> ((start &gt; <span>0</span>) &amp;&amp; (len &gt; <span>0</span><span>))
                                {
                                    list </span>=<span> list.Substring(start, len);
                                }
                                </span><span>else</span><span>
                                {
                                    list </span>= <span>string</span><span>.Empty;
                                }
                            }
                        }
                    }
                }
            }
            </span><span>catch</span><span>
            {
                list </span>= <span>string</span><span>.Empty;
            }

            </span><span>finally</span><span>
            {
                </span><span>if</span> (hconn !=<span> IntPtr.Zero)
                {
                    SQLFreeHandle(SQL_HANDLE_DBC, hconn);
                }

                </span><span>if</span> (henv !=<span> IntPtr.Zero)
                {
                    SQLFreeHandle(SQL_HANDLE_ENV, hconn);
                }
            }

            </span><span>string</span>[] array = <span>null</span><span>;

            </span><span>if</span> (list.Length &gt; <span>0</span><span>)
            {

                array </span>= list.Split(<span>''</span><span>,</span><span>''</span><span>);

            }
            </span><span>return</span><span> array;
        }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 获取网内的数据库服务器名称(qlClientFactory方式)
        </span><span>///</span> <span></span>
        <span>///</span> <span><returns></returns></span><span>服务器名称数组</span><span></span>
        <span>public</span> <span>static</span> <span>string</span><span>[] GetServersBySqlClientFactory()
        {
            DataTable dataSources </span>=<span> SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources();
            DataColumn column2 </span>= dataSources.Columns[<span>"</span><span>ServerName</span><span>"</span><span>];
            DataColumn column </span>= dataSources.Columns[<span>"</span><span>InstanceName</span><span>"</span><span>];
            DataRowCollection rows </span>=<span> dataSources.Rows;
            </span><span>string</span>[] array = <span>new</span> <span>string</span><span>[rows.Count];
            </span><span>for</span> (<span>int</span> i = <span>0</span>; i )
            {
                <span>string</span> str2 = rows[i][column2] <span>as</span> <span>string</span><span>;
                </span><span>string</span> str = rows[i][column] <span>as</span> <span>string</span><span>;
                </span><span>if</span> (((str == <span>null</span>) || (str.Length == <span>0</span>)) || (<span>"</span><span>MSSQLSERVER</span><span>"</span> ==<span> str))
                {
                    array[i] </span>=<span> str2;
                }
                </span><span>else</span><span>
                {
                    array[i] </span>= str2 + <span>@"</span><span>\</span><span>"</span> +<span> str;
                }
            }
            Array.Sort</span>string&gt;<span>(array);

            </span><span>return</span><span> array;
        }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 根据不带数据库的连接字符串,遍历查找出所有数据库实例
        </span><span>///</span> <span></span>
        <span>///</span> <span><returns></returns></span><span>指定服务器的所有数据库</span><span></span>
        <span>public</span> <span>string</span><span>[] GetDataBases()
        {
            List</span>string&gt; list = <span>new</span> Liststring&gt;<span>();
            SqlConnection sqlConnection </span>= <span>new</span><span> SqlConnection(ConnectString);
            </span><span>string</span><span>[] result;
            </span><span>try</span><span>
            {
                sqlConnection.Open();
                SqlCommand sqlCommand </span>= <span>new</span> SqlCommand(<span>"</span><span>select  name AS 数据库 from master..sysdatabases</span><span>"</span><span>, sqlConnection);
                SqlDataReader sqlDataReader </span>=<span> sqlCommand.ExecuteReader();
                </span><span>while</span><span> (sqlDataReader.Read())
                {
                    list.Add(sqlDataReader.GetString(</span><span>0</span><span>));
                }
                sqlDataReader.Close();
                </span><span>string</span>[] array = <span>new</span> <span>string</span><span>[]
                {
                    </span><span>"</span><span>master</span><span>"</span><span>, 
                    </span><span>"</span><span>tempdb</span><span>"</span><span>, 
                    </span><span>"</span><span>model</span><span>"</span><span>, 
                    </span><span>"</span><span>msdb</span><span>"</span><span>
                };
                </span><span>string</span>[] array2 =<span> array;
                </span><span>for</span> (<span>int</span> i = <span>0</span>; i )
                {
                    <span>string</span> item =<span> array2[i];
                    </span><span>try</span><span>
                    {
                        list.Remove(item);
                    }
                    </span><span>catch</span><span>
                    {
                    }
                }
                result </span>=<span> list.ToArray();
            }
            </span><span>catch</span><span>
            {
                result </span>=<span> list.ToArray();
            }
            </span><span>finally</span><span>
            {
                sqlConnection.Close();
            }
            </span><span>return</span><span> result;
        }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 获取SqlServer指定数据库的所有表
        </span><span>///</span> <span></span>
        <span>///</span> <span><returns></returns></span><span>表集合,出错则产生异常</span><span></span>
        <span>public</span> <span>string</span><span>[] GetTables()
        {
            </span><span>string</span> sql = <span>"</span><span>select object_name (id) from sysobjects where xtype = ''u'' and objectproperty (id,''IsMSShipped'') = 0</span><span>"</span><span>;
            DataTable dt </span>=<span> ReturnDataTable(sql);
            List</span>string&gt; Ls = <span>new</span> Liststring&gt;<span>();
            </span><span>for</span> (<span>int</span> i = <span>0</span>; i )
            {
                Ls.Add(dt.Rows[i][<span>0</span><span>].ToString());
            }
            </span><span>return</span><span> Ls.ToArray();           
        }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 获取指定表的所有列
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="TableName"></span><span>表名</span><span></span>
        <span>///</span> <span><returns></returns></span><span>列集合,出错则产生异常</span><span></span>
        <span>public</span> <span>string</span>[] GetColumns(<span>string</span><span> TableName)
        {
            </span><span>string</span> sql = <span>string</span>.Format(<span>"</span><span>select name from syscolumns where id=object_id(''{0}'')</span><span>"</span><span>,TableName);
            </span><span>try</span><span>
            {
                List</span>string&gt; Ls = <span>new</span> Liststring&gt;<span>();
                DataTable dt </span>=<span> ReturnDataTable(sql);
                </span><span>for</span> (<span>int</span> i = <span>0</span>; i )
                {
                    Ls.Add(dt.Rows[i][<span>0</span><span>].ToString());
                }
                </span><span>return</span><span> Ls.ToArray();
            }
            </span><span>catch</span><span>
            {
                
                </span><span>throw</span><span>;
            }
        }</span>
登录后复制

接下来就是许多比较常用的增删改查的操作了。就不分开写了。

为了查看方便,贴出自己所有代码:

C# SqlServer操作辅助类(SqlServerHelper.cs)C# SqlServer操作辅助类(SqlServerHelper.cs)View Code

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Runtime.InteropServices;

namespace MyTool.DataBase
{
    /// 
    /// SQL Server 数据库的操作类库。代码原创。
    /// 
    public class SqlServerHelper
    {
        #region[字段]
        private string connectstring = "Data Source=127.0.0.1;Initial Catalog=AdventureWorksDW;Integrated Security=True";      
        SqlConnection connect = null;
        SqlCommand command = null;
        private int CommandTimeOut = 30;
        #endregion

        #region[属性]
        /// 
        /// 数据库连接字符串
        /// 
        public string ConnectString
        {
            get { return connectstring; }
            set { connectstring = value; }
        }
        #endregion

        <span>#region</span>[构造函数]
        <span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span>
        <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> ConStr, <span>int</span><span> TimeOut)
        {
            ConnectString </span>=<span> ConStr;
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>=<span> TimeOut;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="ConStr"></span><span>正确的数据库连接字符串</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span><span> ConStr)
        {
            ConnectString </span>=<span> ConStr;
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>= <span>30</span><span>;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span>
        <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span>
        <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span>
        <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span> Pwd,<span>int</span><span> TimeOut)
        {
            ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>=<span> TimeOut;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="DataServer"></span><span>数据库服务器名称或地址</span><span></span>
        <span>///</span> <span><param name="DataBase"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="UserID"></span><span>用户名</span><span></span>
        <span>///</span> <span><param name="Pwd"></span><span>密码</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> DataServer, <span>string</span> DataBase, <span>string</span> UserID, <span>string</span><span> Pwd)
        {
            ConnectString </span>= <span>string</span>.Format(<span>"</span><span>Data Source={0};Initial Catalog={1};User ID={2};pwd={3}</span><span>"</span><span>, DataServer, DataBase, UserID, Pwd);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>= <span>30</span><span>;          
        }

        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span>
        <span>///</span> <span><param name="TimeOut"></span><span>超时时间</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span> isLocal,<span>int</span><span> TimeOut)
        {
            </span><span>if</span> (!<span>isLocal)
            {
                </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>));
            }
            connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>=<span> TimeOut;
        }
        </span><span>///</span> <span><summary></summary></span>
        <span>///</span><span> 构造函数,初始化
        </span><span>///</span> <span></span>
        <span>///</span> <span><param name="database"></span><span>访问的数据库</span><span></span>
        <span>///</span> <span><param name="isLocal"></span><span>是否为本地数据库?若False,则抛出异常</span><span></span>
        <span>public</span> SqlServerHelper(<span>string</span> database, <span>bool</span><span> isLocal)
        {
              </span><span>if</span> (!<span>isLocal)
            {
                </span><span>throw</span> (<span>new</span> Exception(<span>"</span><span>不在本地而是用了本地数据库访问方式,导致异常,请修改isLocal的值为True。</span><span>"</span><span>));
            }
            connectstring </span>= <span>string</span>.Format(<span>"</span><span>Data Source=127.0.0.1;Initial Catalog={0};Integrated Security=True</span><span>"</span><span>, database);
            connect </span>= <span>new</span><span> SqlConnection(ConnectString);
            CommandTimeOut </span>= <span>30</span><span>;
        }
        </span><span>#endregion</span>

        #region[私有函数]
        private void Open()
        {
            try
            {
                if (connect.State != System.Data.ConnectionState.Open)
                {
                    connect.Open();
                }

            }
            catch (Exception ex)
            {
                throw (new Exception(ex.Message));
            }
        }

        private void Close()
        {
            try
            {
                if (connect.State != System.Data.ConnectionState.Closed)
                {
                    connect.Close();
                }

            }
            catch (Exception ex)
            {
                throw (new Exception(ex.Message));
            }
        }
        #endregion

        /// 
        /// 测试是否能够连通
        /// 
        /// 布尔值
        public bool ConnectTest()
        {
            try
            {
                connect.Open();
            }
            catch
            {
                connect.Close();
                return false;
            }
            return true;
        }

        /// 
        /// 执行无返回的Sql语句,如插入,删除,更新
        /// 
        /// SQL语句
        /// 受影响的条数
        public int ExecuteNonQuery(string sqlstr)
        {
            try
            {
                Open();
                command = new SqlCommand(sqlstr, connect);
                int num = command.ExecuteNonQuery();
                command.Parameters.Clear();
                Close();
                return num;
            }
            catch
            {
                throw;
            }

        }

        /// 
        /// 执行查询语句,返回DataSet
        /// 
        /// Sql
        /// DataSet数据集
        public DataSet ReturnDataSet(string sqlstr)
        {
            DataSet ds = new DataSet();
            try
            {
                Open();
                SqlDataAdapter adapter = new SqlDataAdapter(sqlstr, connect);
                adapter.Fill(ds, "Obj");
            }
            catch (Exception)
            {
                throw;
            }
            return ds;
        }

        /// 
        /// 执行查询语句,返回DataTable
        /// 
        /// Sqk
        /// DataTable数据表
        public DataTable ReturnDataTable(string sqlstr)
        {
            return ReturnDataSet(sqlstr).Tables[0];
        }

        /// 
        /// 执行查询语句,返回DataReader
        /// 
        /// Sql
        /// DataReader
        public SqlDataReader ReturnDataReader(string sqlstr)
        {

            try
            {
                Open();
                command = new SqlCommand(sqlstr, connect);
                SqlDataReader myReader = command.ExecuteReader();
                command.Parameters.Clear();
                Close();
                return myReader;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                throw new Exception(e.Message);
            }

        }

        /// 
        /// 执行事务
        /// 
        /// 
        public void ExecuteSqlTran(ArrayList SQLStringList)
        {

            Open();
            command = new SqlCommand();
            command.Connection = connect;
            SqlTransaction tx = connect.BeginTransaction();
            command.Transaction = tx;
            try
            {
                for (int n = 0; n )
                {
                    string strsql = SQLStringList[n].ToString();
                    if (strsql.Trim().Length > 1)
                    {
                        command.CommandText = strsql;
                        command.ExecuteNonQuery();
                    }
                }
                tx.Commit();
            }
            catch (Exception)
            {
                tx.Rollback();
                throw;
            }
        }

        #region 供使用API方式时使用
        [DllImport("odbc32.dll")]
        private static extern short SQLAllocHandle(short hType, IntPtr inputHandle, out IntPtr outputHandle);
        [DllImport("odbc32.dll")]
        private static extern short SQLSetEnvAttr(IntPtr henv, int attribute, IntPtr valuePtr, int strLength);
        [DllImport("odbc32.dll")]
        private static extern short SQLFreeHandle(short hType, IntPtr handle);
        [DllImport("odbc32.dll", CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
        private static extern short SQLBrowseConnect(IntPtr hconn, System.Text.StringBuilder inString,
            short inStringLength, System.Text.StringBuilder outString, short outStringLength,
            out short outLengthNeeded);

        private const short SQL_HANDLE_ENV = 1;
        private const short SQL_HANDLE_DBC = 2;
        private const int SQL_ATTR_ODBC_VERSION = 200;
        private const int SQL_OV_ODBC3 = 3;
        private const short SQL_SUCCESS = 0;
        private const short SQL_NEED_DATA = 99;
        private const short DEFAULT_RESULT_SIZE = 1024;

        private const string SQL_DRIVER_STR = "DRIVER=SQL SERVER";
        #endregion
        /// 
        /// 获取网内的数据库服务器名称(API方式)
        /// 
        /// 服务器名称数组
        public static string[] GetServers()
        {
            string list = string.Empty;
            IntPtr henv = IntPtr.Zero;
            IntPtr hconn = IntPtr.Zero;
            System.Text.StringBuilder inString = new System.Text.StringBuilder(SQL_DRIVER_STR);
            System.Text.StringBuilder outString = new System.Text.StringBuilder(DEFAULT_RESULT_SIZE);
            short inStringLength = (short)inString.Length;
            short lenNeeded = 0;
            try
            {
                if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_ENV, henv, out henv))
                {
                    if (SQL_SUCCESS == SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (IntPtr)SQL_OV_ODBC3, 0))
                    {
                        if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_DBC, henv, out hconn))
                        {

                            if (SQL_NEED_DATA == SQLBrowseConnect(hconn, inString, inStringLength, outString,
                                 DEFAULT_RESULT_SIZE, out lenNeeded))
                            {
                                if (DEFAULT_RESULT_SIZE  lenNeeded)
                                {
                                    outString.Capacity = lenNeeded;
                                    if (SQL_NEED_DATA != SQLBrowseConnect(hconn, inString, inStringLength, outString,
                                         lenNeeded, out lenNeeded))
                                    {
                                        throw new ApplicationException("Unabled to aquire SQL Servers from ODBC driver.");
                                    }
                                }
                                list = outString.ToString();
                                int start = list.IndexOf("{") + 1;
                                int len = list.IndexOf("}") - start;
                                if ((start > 0) && (len > 0))
                                {
                                    list = list.Substring(start, len);
                                }
                                else
                                {
                                    list = string.Empty;
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
                list = string.Empty;
            }

            finally
            {
                if (hconn != IntPtr.Zero)
                {
                    SQLFreeHandle(SQL_HANDLE_DBC, hconn);
                }

                if (henv != IntPtr.Zero)
                {
                    SQLFreeHandle(SQL_HANDLE_ENV, hconn);
                }
            }

            string[] array = null;

            if (list.Length > 0)
            {

                array = list.Split('','');

            }
            return array;
        }

        /// 
        /// 获取网内的数据库服务器名称(qlClientFactory方式)
        /// 
        /// 服务器名称数组
        public static string[] GetServersBySqlClientFactory()
        {
            DataTable dataSources = SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources();
            DataColumn column2 = dataSources.Columns["ServerName"];
            DataColumn column = dataSources.Columns["InstanceName"];
            DataRowCollection rows = dataSources.Rows;
            string[] array = new string[rows.Count];
            for (int i = 0; i )
            {
                string str2 = rows[i][column2] as string;
                string str = rows[i][column] as string;
                if (((str == null) || (str.Length == 0)) || ("MSSQLSERVER" == str))
                {
                    array[i] = str2;
                }
                else
                {
                    array[i] = str2 + @"\" + str;
                }
            }
            Array.Sortstring>(array);

            return array;
        }

        /// 
        /// 根据不带数据库的连接字符串,遍历查找出所有数据库实例
        /// 
        /// 指定服务器的所有数据库
        public string[] GetDataBases()
        {
            Liststring> list = new Liststring>();
            SqlConnection sqlConnection = new SqlConnection(ConnectString);
            string[] result;
            try
            {
                sqlConnection.Open();
                SqlCommand sqlCommand = new SqlCommand("select  name AS 数据库 from master..sysdatabases", sqlConnection);
                SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
                while (sqlDataReader.Read())
                {
                    list.Add(sqlDataReader.GetString(0));
                }
                sqlDataReader.Close();
                string[] array = new string[]
                {
                    "master", 
                    "tempdb", 
                    "model", 
                    "msdb"
                };
                string[] array2 = array;
                for (int i = 0; i )
                {
                    string item = array2[i];
                    try
                    {
                        list.Remove(item);
                    }
                    catch
                    {
                    }
                }
                result = list.ToArray();
            }
            catch
            {
                result = list.ToArray();
            }
            finally
            {
                sqlConnection.Close();
            }
            return result;
        }

        /// 
        /// 获取SqlServer指定数据库的所有表
        /// 
        /// 表集合,出错则产生异常
        public string[] GetTables()
        {
            string sql = "select object_name (id) from sysobjects where xtype = ''u'' and objectproperty (id,''IsMSShipped'') = 0";
            DataTable dt = ReturnDataTable(sql);
            Liststring> Ls = new Liststring>();
            for (int i = 0; i )
            {
                Ls.Add(dt.Rows[i][0].ToString());
            }
            return Ls.ToArray();           
        }

        /// 
        /// 获取指定表的所有列
        /// 
        /// 表名
        /// 列集合,出错则产生异常
        public string[] GetColumns(string TableName)
        {
            string sql = string.Format("select name from syscolumns where id=object_id(''{0}'')",TableName);
            try
            {
                Liststring> Ls = new Liststring>();
                DataTable dt = ReturnDataTable(sql);
                for (int i = 0; i )
                {
                    Ls.Add(dt.Rows[i][0].ToString());
                }
                return Ls.ToArray();
            }
            catch
            {
                
                throw;
            }
        }
    }
}
登录后复制

 

C#访问SqlServer的工具类SqlServerHelper

C#访问SqlServer的工具类SqlServerHelper

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MysqL.Data.MysqLClient;
using System.Data;
class MysqLHelper:Idisposable
    {
        private MysqLConnection m_conn = null;
        private MysqLTransaction m_trans = null;
        private bool m_tran_enabled = false;


        public MysqLHelper()
        {
            m_conn = new MysqLConnection();
            m_conn.ConnectionString = "Server=localhost;Port=3301;Uid=sa;Pwd=000";
            m_conn.open();
        }


        public void BeginTrans()
        {
            m_trans = m_conn.BeginTransaction();
            m_tran_enabled = true;
        }


        public void Commit()
        {
            if (m_trans != null && m_tran_enabled)
            {
                m_tran_enabled = false;
                m_trans.Commit();
            }
        }


        public void Rollback()
        {
            if (m_trans != null && m_tran_enabled)
            {
                m_tran_enabled = false;
                m_trans.Rollback();
            }
        }


        public object QuerySome(string sql,int fieldindex)
        {
            using (MysqLCommand cmd = new MysqLCommand(sql,m_conn))
            {
                using (MysqLDataReader sr = cmd.ExecuteReader())
                {
                    if (sr.Read())
                    {
                        return sr.GetValue(fieldindex);
                    }
                }
            }
            return null;
        }


        public delegate void FillValues(MysqLDataReader sr);
       
        public void QuerySomes(string sql,FillValues fill)
        {
            using (MysqLCommand cmd = new MysqLCommand(sql,m_conn))
            {
                using (MysqLDataReader sr = cmd.ExecuteReader())
                {
                    fill(sr);
                }
            }
        }


        public DataTable Source(string sql)
        {
            DataTable dt = null;
            MysqLCommand cmd = null;
            MysqLDataAdapter ad = null;
            try
            {
                lock (dt = new DataTable())
                {
                    cmd = new MysqLCommand(sql,m_conn);
                    ad = new MysqLDataAdapter((MysqLCommand)cmd);
                    dt.Clear();
                    ad.Fill(dt);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return dt;
        }


        public void ExecProc(string proc,params MysqLParameter[] ps)
        {
            using (MysqLCommand cmd = new MysqLCommand(proc,m_conn))
            {
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                foreach (MysqLParameter p in ps)
                {
                    cmd.Parameters.Add(p);
                }
                cmd.ExecuteNonQuery();
            }
        }


        void Idisposable.dispose()
        {
            m_conn.Close();
            m_conn.dispose();
            if (m_trans != null)
            {
                m_trans.dispose();
            }
        }
    }

以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。

DBSyncer 中间件 SQLServer同步SQLServer 配置教程

DBSyncer 中间件 SQLServer同步SQLServer 配置教程

DBSyncer 项目地址:https://gitee.com/ghi/dbsyncer

SqlServer 配置

原理:SQL Server 2008提供了内建的方法变更数据捕获(Change Data Capture 即CDC)以实现异步跟踪用户表的数据修改。

要求2008版本以上, 启动代理服务(Agent服务), 连接账号具有 sysadmin 固定服务器角色或 db_owner 固定数据库角色的成员身份。对于所有其他用户,具有源表SELECT 权限;如果已定义捕获实例的访问控制角色,则还要求具有该数据库角色的成员身份。

打开CDC功能

windows环境

快捷键windows + r,输入 services.msc 进入系统服务窗口
services.msc

启动代理服务,默认也会启动数据库服务

服务状态为正在运行

Linux环境也是开启上面的2个服务

SqlServer服务配置修改完成了!接下来配置驱动

准备2张表,分别是MY_USER和MY_ORG,计划将MY_USER的数据同步到MY_ORG中

1、进入dbs页面,添加SqlServer连接

2、因为我的2张表都是一个库里,所以这里我只需创建1个连接

3、添加驱动

4、添加表映射关系,进入表字段映射页面查看一下,点击保存

5、保存返回到驱动管理页面

6、启动驱动,开始全量同步

执行完成

7、检查一下表数据是否都同步过来了

准备测试增量同步

1、切换为增量同步,返回

2、启动驱动

3、手动修改数据,验证增删改事件

验证插入数据

INSERT INTO [dbo].[MY_USER]([id], [name], [age], [money], [create_date], [remark], [time], [d_time], [img]) 
VALUES (1000006, ''验证增量同步'', 9, 99.99, ''2022-07-24'', ''hello'', ''14:23:39'', ''2022-07-24 14:23:41'', NULL);

查看一下MY_ORG表,有新记录

查看监控,也能看到日志

继续验证修改数据

查看一下MY_ORG表,有新变更

验证删除数据

最后再看一下监控

恭喜您,学完了 SQLServer同步SQLServer 配置教程!

下期见! AE86 ☕

HmailServer+mysql | SqlServer2008 安装教程

HmailServer+mysql | SqlServer2008 安装教程

1、局域网配置hmailServer需要在局域网进行DNS解析,我当时没有配置成功,因为有域名就直接用域名配了

2、在下文第四点配置的AfterLogic Webmail是邮箱的Web端,这个Web端比较简陋,建议使用FoxMail或者OutLook这样的工具来收发邮件

3、hmailServer自带一个PHPWebAdmin项目,这个项目跟AfterLogic Webmail都是PHP项目需要PHP环境,PHPWebAdmin是用来管理hamilServer的域名、邮箱帐号等,不是用来收发邮件

4、看到网友在资源下载上的一些评论,一直想完善本并文补充一些内容以更好的帮助大家学习,但本文发出后一直在忙于工作和整理其他的学习资料。若需要帮助可以发送邮件到:liyangxi99@sina.com,水平有限希望能帮到各位。


一、Hmail官方网站 http://www.hmailserver.com/

二、安装hmailServer

如果MSSQL安装正确,连接MSSQL基本上是一致,只是在选择服务时,选择MMSQL的服务

三、hmail汉化操作

        1、下载汉化文件chinese.ini http://download.csdn.net/detail/wandan_/6858505

        2、将这个文件拷贝到hmail安装目录下的Languages下

        3、在hmail安装目录Bin里找到hMailServer.INI文件,打开,找到下面的位置在最后加上chinese

[GUILanguages]
ValidLanguages=english,swedish,chinese

        4、重启hmailServer服务

        5、登录hmailSEver

                 

四、开启MySql远程服务

 假如你已经安装了MySQL,那么我们看下mysql这个库里的user表 

 这个表存储的是mysql使用用户的表,看上面就是root账户的信息,将Host字段改成‘%’就表示可以进行远程访问,看懂这个表之后我们就明白下面的SQL语句是启什么作用的了。

下面通过SQL语句创建一个用户:

1、创建一个用户

mysql> create user hmailAdmin;

2、为这个用户设置密码

mysql> update user set Password=password(''123456'') where User = ''hmailAdmin'';

3、为这个账户进行授权  

mysql> grant all on hmail.* to hmailAdmin identified by ''123456'';

hmail.*:hmail是上面我创建的数据库。hmailAdmin是创建的用户

//开启MySql远程服务器要注意:确保防火墙开启了MySql的端口

四、hmail配置AfterLogic  WebMail

        (1)要配置webmail,必须先配置好PHP环境,windows2008系统可可参考http://blog.csdn.net/wandan_/article/details/22731767

        (2)如果你的PHP环境已经配置好了,下面下载AfterLogic WebMail并解压

                  下载地址:http://www.afterlogic.org/download/webmail-lite

                   AfterLogic在线文档:http://www.afterlogic.com/wiki/WebMail_Pro_7_documentation

        (3) 将解压后将webmail,COPY到C:\inetpub\wwwroot下(你的根目录)

        (4)http://localhost/webmail/install 访问该地址进行安装,如果有警告按(5)配置

        (5)打开php.ini并查找以下相关关键字做如下修改

              

        (6)如果有下图的警告信息

              

        点击上面的FAO,找到下图的位置,注意是Windows系统的


上图的意思是Guest账户没有足够的权限去访问webmail的data文件夹,操作的步骤看下面的介绍

       找webmail下的data文件夹,邮件属性,按下图操作

      









点击确定完成,然后刷新 http://localhost/webmail/install

(7)如果没有警告,点击Next >> I Agree 

          下图Host是你的主机,如果是远程填你远程的IP地址,Mysql端口如果有改过,会连接不成功(这里我是默认的3306)

          因为webmail连接数据库的端口没改,具体在哪修改我还没找到,如果有人知道,希望留言分享下

        

(8)下一步是输入管理员mailadm的密码 >> 下一步

             这里host,如果是远程输入你的远程IP地址,测试连接没问题,再下一步就安装完成

              

(9)安装完成后,删除webmail下的install文件夹

           访问管理员登录地址:http://localhost/webmail/adminpanel,输入用戶:mailadm和密碼(刚有配置过)

            普通帐号的登录:http://localhost/webmail


       选择汉语



我们今天的关于SQLServer 扫盲sql server?的分享已经告一段落,感谢您的关注,如果您想了解更多关于C# SqlServer操作辅助类(SqlServerHelper.cs)、C#访问SqlServer的工具类SqlServerHelper、DBSyncer 中间件 SQLServer同步SQLServer 配置教程、HmailServer+mysql | SqlServer2008 安装教程的相关信息,请在本站查询。

本文标签: