GVKun编程网logo

SqlServer开启CLR使用(C#)DLL实现实时Socket通知

16

在这篇文章中,我们将为您详细介绍SqlServer开启CLR使用的内容,并且讨论关于C#DLL实现实时Socket通知的相关问题。此外,我们还会涉及一些关于delphiserversocket,cli

在这篇文章中,我们将为您详细介绍SqlServer开启CLR使用的内容,并且讨论关于C#DLL实现实时Socket通知的相关问题。此外,我们还会涉及一些关于delphi serversocket,clientsocket、Delphi 实现传送文件 、docker 容器安装 mysql 报错 Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)、Docker使用supervisor构建solr的知识,以帮助您更全面地了解这个主题。

本文目录一览:

SqlServer开启CLR使用(C#)DLL实现实时Socket通知

SqlServer开启CLR使用(C#)DLL实现实时Socket通知

 --1、默认情况下,sql Server中的CLR是关闭的,所以我们需要执行如下命令打开CLR:  
exec sp_configure 'clr enabled',1     
reconfigure     
GO  

-- DROP FUNCTION dbo.fnScoketSend   --删除Function
-- drop assembly sqlDependency      --删除Dependency
-- create assembly sqlDependency FROM 'E:\sqlDependency.dll' WITH PERMISSION_SET = UNSAFE --1、创建clr依赖
CREATE FUNCTION dbo.fnScoketSend       --2、创建Function
(       
    @Content as nvarchar(MAX)       
)        
RETURNS nvarchar(MAX)      
 AS EXTERNAL name [sqlDependency].[sqlDependency.Notice].[ScoketSendContent]

 --DROP TRIGGER dbo.notify_trigger
-- 3、创建表触发器
CREATE TRIGGER notify_trigger ON  [dbo].[Sample]  
    AFTER  INSERT,DELETE,UPDATE   
AS     
BEGIN    
    /*  
        update触发器会在更新数据后,  
        将更新前的数据保存在deleted表中,更  
        新后的数据保存在inserted表中。  
    */  
    DECLARE @UpdateID NVARCHAR(20)  
    DECLARE @UpdateContent Varchar(MAX)   
    SET  @UpdateID=(SELECT  Deleted.Id FROM  Deleted)   
    SET  @UpdateContent=(SELECT  Inserted.UserAddr FROM  Inserted)   
	SELECT  dbo.fnScoketSend(@UpdateContent)   
END  

--4、测试
INSERT INTO Sample(UserName,UserAddr,AddDate) VALUES('张三','深圳市南山区蛇口',GETDATE())
SELECT * FROM Sample

using Microsoft.sqlServer.Server;
using System;
using System.Collections.Generic;
using System.Data.sqlTypes;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.sockets;
using System.Text;
using System.Threading.Tasks;

//sqlDependency.dll
namespace sqlDependency
{
    public class Notice
    {
        [sqlFunction(IsDeterministic = true,DataAccess = DataAccessKind.Read)]
        public static sqlString ScoketSendContent(sqlString Content)
        {
            string str = "";
            //创建一个Socket
            var socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            try
            {
                socket.Connect("121.77.61.65",4530);
                //延时
                System.Threading.Thread.Sleep(100);
                var outputBuffer = Encoding.ASCII.GetBytes("new data");
                socket.BeginSend(outputBuffer,outputBuffer.Length,SocketFlags.None,null,null);
                str = "传送成功";
            }
            catch (Exception e)
            {
                str = "传送失败" + e.Message;
            }
            finally
            {
                if (socket != null && socket.Connected)
                {
                    //关闭双方通信
                    socket.Shutdown(SocketShutdown.Both);
                    //延时
                    System.Threading.Thread.Sleep(100);
                    //关闭socket
                    socket.Close();
                }
            }
            return str;
        }
    }
}

delphi serversocket,clientsocket

delphi serversocket,clientsocket

总结

以上是小编为你收集整理的delphi serversocket,clientsocket全部内容。

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

Delphi 实现传送文件 <TServerSocket/TClientSocket>

Delphi 实现传送文件

总结

以上是小编为你收集整理的">Delphi 实现传送文件 <TServerSocket/TClientSocket>全部内容。

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

docker 容器安装 mysql 报错 Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)

docker 容器安装 mysql 报错 Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)

root@b04c9896b0ce:/# mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)
root@b04c9896b0ce:/# docker stop mysql01
bash: docker: command not found
root@b04c9896b0ce:/# docker images mysql:8.0.28
bash: docker: command not found
root@b04c9896b0ce:/# exit

Docker使用supervisor构建solr

Docker使用supervisor构建solr

构建Centos-solr-supervisor时首先要想清楚,solr的目录该如何规整,用什么方式来启动solr(jetty/tomact),并且solr不同于其项目(如果用war包的形式进行部署)需进行服务的不断重启,那么就会牵扯到Docker容器的机制问题,Docker镜像的机制——当你第一次构建完镜像,镜像里的内容不会发生改变只有提交更改才会更改镜像并生成新的镜像,所有有必要首先考虑solr的目录问题及部署问题。

1.构建solr所用的基础镜像centos-java7-supervisor(此镜像可以作为所有应用到java的基础镜像)

下载地址:githup:https://github.com/aarongo/cetnos-java-base.git

可以直接下载进行使用

自动构建方式

    Dockerfile
FROM centos:centos6
MAINTAINER  aaron "aaron.docker@gmail.com"
RUN yum search java | grep -i --color JDK &&\
    yum -y install java-1.7.0-openjdk java-1.7.0-openjdk-devel &&\
    ls -l /usr/lib/jvm/ &&\
    echo "export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64" >> /etc/profile
CMD bash -l

    运行方式
docker run -it aarongo/centos-java-supervisor

    检测结果

到此基础镜像构建完成

2.构建centos-solr-supervisor镜像(以centos-java-supervisor为基础进行solr镜像的配置)

下载地址:

                Github:https://github.com/aarongo/centos-solr-supervisor.git

因为下载solr软件包时速度非常慢,所以将solr软件包做一个镜像

下载地址:

                Github:https://github.com/aarongo/solr-bse.git

自动构建方式:

solr-base Dockerfile
FROM aarongo/centos-java-supervisor
MAINTAINER  aaron "aaron.docker@gmail.com"
RUN yum -y install wget tar
RUN cd / && wget http://mirrors.hust.edu.cn/apache/lucene/solr/4.8.1/solr-4.8.1.tgz && tar xzf solr-4.8.1.tgz

centos-solr Dockerfile
FROM aarongo/centos-java-supervisor
MAINTAINER  aaron "aaron.docker@gmail.com"
#Install supervisor
RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RUN yum -y update  && yum -y install python-pip && /usr/bin/pip install supervisor
RUN mkdir -p /etc/supervisor/conf.d && mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisord.conf
VOLUME /var/log/supervisor
#Install sshd
RUN yum install -y openssh-server && sed -i ''s/UsePAM yes/UsePAM no/g'' /etc/ssh/sshd_config
# select root pasword
RUN echo "root:pasword" | chpasswd && echo "root   ALL=(ALL)       ALL" >> /etc/sudoers &&\
    ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key &&\
    mkdir /var/run/sshd
#install tomcat
RUN java -version && yum -y install wget && yum -y install tar
RUN cd /tmp && wget http://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.57/bin/apache-tomcat-7.0.57.tar.gz && cd /tmp && tar xzf apache-tomcat-7.0.57.tar.gz &&  mv apache-tomcat-7.0.57 /usr/local/tomcat && mkdir /solrdeploy && chmod +x /usr/local/tomcat/bin/*
ADD ./server.xml /usr/local/tomcat/conf/
ADD ./tomcat-users.xml /usr/local/tomcat/conf/
#Installing Apache Commons Loggins
RUN wget http://archive.apache.org/dist/commons/logging/binaries/commons-logging-1.1.3-bin.tar.gz &&\
    tar zxf commons-logging-1.1.3-bin.tar.gz && cd commons-logging-1.1.3 &&\
    cp commons-logging-*.jar /usr/local/tomcat/lib
#Installing SLF4J
RUN wget http://www.slf4j.org/dist/slf4j-1.7.7.tar.gz && tar xzf slf4j-1.7.7.tar.gz &&\
    cd slf4j-1.7.7 && cp slf4j-*.jar /usr/local/tomcat/lib
#Installing solr 
RUN cd /tmp && wget http://mirrors.hust.edu.cn/apache/lucene/solr/4.8.1/solr-4.8.1.tgz && tar xzf solr-4.8.1.tgz 
RUN mkdir  /solrhome && cp /solr-4.8.1/dist/solr-4.8.1.war /solrdeploy/solr.war && cp -r /solr-4.8.1/example/solr /solrhome/
#ADD ./schema.xml /home/solr/collection1/conf/
VOLUME ["/solrdeploy"]
VOLUME ["/solrhome"]
EXPOSE 22 8080
CMD ["/usr/bin/supervisord"]
#此处的VOLUME 外部目录一定要与容器内部目录结构相同 如果不相同会出现构建后运行时容器内部目录会空

运行方式
docker run -p  1028:22 -p 8080:8080 -it -v /solrdeploy:/solrdeploy -v /dockersolr:/solrhome aarongo/centos-solr-supervisor (前台显示)
#Or
docker run -d -p  1028:22 --name solr -v /solrdeploy:/solrdeploy -v /dockersolr:/solrhome aarongo/centos-solr-supervisor(后台运行)

注意:

启动后等待项目部署完成后停止,删除项目部署文件(solr.war),进行分词器的配置(我容器用的是 TOMCAT)

安装分词器

下载mmseg4j :http://yunpan.cn/cAeNC8buXBZzv  提取码 293a

jar包下载地址:http://yunpan.cn/cAehVEPNZ3Uwe  提取码 200d

1.将\mmseg4j-1.9.1\dist目录下的jar包全部放到部署目录下solr/WEB-INF\lib下

2.在solrhome目录下的connection1/conf/schema.xml文件里添加

<fieldType name="text_mmseg4j_complex"  positionIncrementGap="100" >
      <analyzer>
        <tokenizer  mode="complex" dicPath="dic"/>
      </analyzer>
    </fieldType>
    <fieldType name="text_mmseg4j_maxword"  positionIncrementGap="100" >
      <analyzer>
        <tokenizer  mode="max-word" dicPath="dic"/>
      </analyzer>
    </fieldType>
    <fieldType name="text_mmseg4j_simple"  positionIncrementGap="100" >
      <analyzer>
        <tokenizer  mode="simple" dicPath="dic"/>
      </analyzer>
    </fieldType>

3.再次运行tomcat会报如下错误

4.关闭tomcat,修改mmseg4j jar包的源代码 \mmseg4j-1.9.1\mmseg4j-analysis\src\main\java\com\chenlb\mmseg4j\analysis\MMSegTokenizer.java

5.因为mmseg4j是maven项目所以使用mvn clean package -DskipTests进行重新编译生成新的jar包

在Windows下dos 进入 \mmseg4j-1.9.1\mmseg4j-analysis\src\main\java\com\chenlb\mmseg4j\analysis

使用mvn clean package -DskipTests进行编译

在当前目录中会生成targe目录在其目录下生产一个新的jar包替换掉solr/WEB-INF\lib下同名的jar包即可

6.启动tomcat 如果你看到如下界面证明solr和分词器都已经成功

至此Docker-solr基础环境构建完成

今天关于SqlServer开启CLR使用C#DLL实现实时Socket通知的讲解已经结束,谢谢您的阅读,如果想了解更多关于delphi serversocket,clientsocket、Delphi 实现传送文件 、docker 容器安装 mysql 报错 Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2)、Docker使用supervisor构建solr的相关知识,请在本站搜索。

本文标签: