powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Service Broker для репликации
25 сообщений из 179, страница 2 из 8
Service Broker для репликации
    #39946697
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ай да, у вас же линукс

чем там обычно порты на доступность проверяют?
nmap какой нибудь или nc
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946703
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
felix_ff
Максим Александровитч,

линуксовой версии под рукой нет, поэтому со стопроцентной гарантией утверждать не могу.

вы когда открыли диалог и отправили сообщение получателю покажите:
--на сервере источнике
select * from sys.dm_broker_connections
Там табла большая..что конкретное может выложить?

--на сервере получателе
select * from sys.dm_broker_connections
Там табла большая..что конкретное может выложить?



--на сервере источнике:
use [source_db_name] --заменить на имя своей базы источника
select * from sys.transmission_queue;
Там табла большая..что конкретное может выложить?



конкретно у вас есть conversation_handle сохраненный в переменной @h при открытии диалога.
найдите по нему в sys.transmission_queue источника сообщение и покажите его текст
Код: sql
1.
2.
3.
4.
select try_cast(message_body as xml), transmission_status from sys.transmission_queue where conversation_handle = @h;

Сообщение то,которое послал
test message from server 1




в dm_broker_connections нас интересует несколько последних открытых соединений их статус:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select top (10) 
state_desc,
connect_time,
authentication_method,
principal_name,
remote_user_name,
login_state,
is_accept,
sends_posted,
total_sends
from sys.dm_broker_connections 
where is_accept = 0
order by connect_time desc


state_desc	connect_time	authentication_method	principal_name	remote_user_name	login_state	is_accept	sends_posted	total_sends
LOGGED IN	2020-04-13 15:22:13.403	Microsoft Unified Security Proto	public	NULL	12	0	0	10
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946708
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

ок, допустим физическое соединение проходит, хотя оно у вас настроенно под анонимную аутентификацию.

но обратим внимание на sys.transmission_queue
если в теле сообщения ваш исходный текст, то вы не привели что написанно в столбце transmission_status
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946709
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Там пусто..
А как вы поняли что соединение прошло?
Я вот через SQLCMD вижу да 1 сервер 2 и 2-й..
Порты вроде открыты 4022 на обоих
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946711
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

sys.dm_broker_connections => login_state = 12
если вы конечно правильно идентифицировали нужную строку.

ок давайте проще:
trace

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5 

exec @rc = sp_trace_create @TraceID output, 0, N'C:\temp\BROKER_EVENTS.trc', @maxfilesize, NULL 
if (@rc != 0) goto error

declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 163, 1, @on
exec sp_trace_setevent @TraceID, 163, 9, @on
exec sp_trace_setevent @TraceID, 163, 3, @on
exec sp_trace_setevent @TraceID, 163, 12, @on
exec sp_trace_setevent @TraceID, 163, 6, @on
exec sp_trace_setevent @TraceID, 163, 7, @on
exec sp_trace_setevent @TraceID, 163, 8, @on
exec sp_trace_setevent @TraceID, 163, 10, @on
exec sp_trace_setevent @TraceID, 163, 21, @on
exec sp_trace_setevent @TraceID, 163, 25, @on
exec sp_trace_setevent @TraceID, 163, 26, @on
exec sp_trace_setevent @TraceID, 163, 51, @on
exec sp_trace_setevent @TraceID, 163, 60, @on
exec sp_trace_setevent @TraceID, 163, 64, @on
exec sp_trace_setevent @TraceID, 138, 1, @on
exec sp_trace_setevent @TraceID, 138, 9, @on
exec sp_trace_setevent @TraceID, 138, 3, @on
exec sp_trace_setevent @TraceID, 138, 12, @on
exec sp_trace_setevent @TraceID, 138, 6, @on
exec sp_trace_setevent @TraceID, 138, 7, @on
exec sp_trace_setevent @TraceID, 138, 8, @on
exec sp_trace_setevent @TraceID, 138, 10, @on
exec sp_trace_setevent @TraceID, 138, 21, @on
exec sp_trace_setevent @TraceID, 138, 26, @on
exec sp_trace_setevent @TraceID, 138, 31, @on
exec sp_trace_setevent @TraceID, 138, 34, @on
exec sp_trace_setevent @TraceID, 138, 51, @on
exec sp_trace_setevent @TraceID, 138, 54, @on
exec sp_trace_setevent @TraceID, 138, 60, @on
exec sp_trace_setevent @TraceID, 138, 64, @on
exec sp_trace_setevent @TraceID, 124, 1, @on
exec sp_trace_setevent @TraceID, 124, 9, @on
exec sp_trace_setevent @TraceID, 124, 3, @on
exec sp_trace_setevent @TraceID, 124, 5, @on
exec sp_trace_setevent @TraceID, 124, 6, @on
exec sp_trace_setevent @TraceID, 124, 7, @on
exec sp_trace_setevent @TraceID, 124, 8, @on
exec sp_trace_setevent @TraceID, 124, 10, @on
exec sp_trace_setevent @TraceID, 124, 12, @on
exec sp_trace_setevent @TraceID, 124, 21, @on
exec sp_trace_setevent @TraceID, 124, 26, @on
exec sp_trace_setevent @TraceID, 124, 34, @on
exec sp_trace_setevent @TraceID, 124, 36, @on
exec sp_trace_setevent @TraceID, 124, 37, @on
exec sp_trace_setevent @TraceID, 124, 38, @on
exec sp_trace_setevent @TraceID, 124, 39, @on
exec sp_trace_setevent @TraceID, 124, 40, @on
exec sp_trace_setevent @TraceID, 124, 42, @on
exec sp_trace_setevent @TraceID, 124, 46, @on
exec sp_trace_setevent @TraceID, 124, 47, @on
exec sp_trace_setevent @TraceID, 124, 51, @on
exec sp_trace_setevent @TraceID, 124, 54, @on
exec sp_trace_setevent @TraceID, 124, 60, @on
exec sp_trace_setevent @TraceID, 124, 64, @on
exec sp_trace_setevent @TraceID, 141, 1, @on
exec sp_trace_setevent @TraceID, 141, 9, @on
exec sp_trace_setevent @TraceID, 141, 3, @on
exec sp_trace_setevent @TraceID, 141, 12, @on
exec sp_trace_setevent @TraceID, 141, 6, @on
exec sp_trace_setevent @TraceID, 141, 7, @on
exec sp_trace_setevent @TraceID, 141, 8, @on
exec sp_trace_setevent @TraceID, 141, 10, @on
exec sp_trace_setevent @TraceID, 141, 21, @on
exec sp_trace_setevent @TraceID, 141, 26, @on
exec sp_trace_setevent @TraceID, 141, 31, @on
exec sp_trace_setevent @TraceID, 141, 36, @on
exec sp_trace_setevent @TraceID, 141, 37, @on
exec sp_trace_setevent @TraceID, 141, 38, @on
exec sp_trace_setevent @TraceID, 141, 45, @on
exec sp_trace_setevent @TraceID, 141, 47, @on
exec sp_trace_setevent @TraceID, 141, 51, @on
exec sp_trace_setevent @TraceID, 141, 54, @on
exec sp_trace_setevent @TraceID, 141, 59, @on
exec sp_trace_setevent @TraceID, 141, 60, @on
exec sp_trace_setevent @TraceID, 141, 64, @on
exec sp_trace_setevent @TraceID, 160, 1, @on
exec sp_trace_setevent @TraceID, 160, 9, @on
exec sp_trace_setevent @TraceID, 160, 3, @on
exec sp_trace_setevent @TraceID, 160, 6, @on
exec sp_trace_setevent @TraceID, 160, 7, @on
exec sp_trace_setevent @TraceID, 160, 8, @on
exec sp_trace_setevent @TraceID, 160, 10, @on
exec sp_trace_setevent @TraceID, 160, 12, @on
exec sp_trace_setevent @TraceID, 160, 21, @on
exec sp_trace_setevent @TraceID, 160, 25, @on
exec sp_trace_setevent @TraceID, 160, 26, @on
exec sp_trace_setevent @TraceID, 160, 31, @on
exec sp_trace_setevent @TraceID, 160, 36, @on
exec sp_trace_setevent @TraceID, 160, 37, @on
exec sp_trace_setevent @TraceID, 160, 38, @on
exec sp_trace_setevent @TraceID, 160, 39, @on
exec sp_trace_setevent @TraceID, 160, 40, @on
exec sp_trace_setevent @TraceID, 160, 42, @on
exec sp_trace_setevent @TraceID, 160, 46, @on
exec sp_trace_setevent @TraceID, 160, 51, @on
exec sp_trace_setevent @TraceID, 160, 54, @on
exec sp_trace_setevent @TraceID, 160, 60, @on
exec sp_trace_setevent @TraceID, 160, 64, @on
exec sp_trace_setevent @TraceID, 143, 3, @on
exec sp_trace_setevent @TraceID, 143, 12, @on
exec sp_trace_setevent @TraceID, 143, 6, @on
exec sp_trace_setevent @TraceID, 143, 7, @on
exec sp_trace_setevent @TraceID, 143, 8, @on
exec sp_trace_setevent @TraceID, 143, 9, @on
exec sp_trace_setevent @TraceID, 143, 10, @on
exec sp_trace_setevent @TraceID, 143, 26, @on
exec sp_trace_setevent @TraceID, 143, 51, @on
exec sp_trace_setevent @TraceID, 143, 60, @on
exec sp_trace_setevent @TraceID, 143, 64, @on
exec sp_trace_setevent @TraceID, 149, 3, @on
exec sp_trace_setevent @TraceID, 149, 12, @on
exec sp_trace_setevent @TraceID, 149, 5, @on
exec sp_trace_setevent @TraceID, 149, 6, @on
exec sp_trace_setevent @TraceID, 149, 7, @on
exec sp_trace_setevent @TraceID, 149, 8, @on
exec sp_trace_setevent @TraceID, 149, 9, @on
exec sp_trace_setevent @TraceID, 149, 10, @on
exec sp_trace_setevent @TraceID, 149, 21, @on
exec sp_trace_setevent @TraceID, 149, 25, @on
exec sp_trace_setevent @TraceID, 149, 26, @on
exec sp_trace_setevent @TraceID, 149, 38, @on
exec sp_trace_setevent @TraceID, 149, 51, @on
exec sp_trace_setevent @TraceID, 149, 54, @on
exec sp_trace_setevent @TraceID, 149, 60, @on
exec sp_trace_setevent @TraceID, 149, 64, @on
exec sp_trace_setevent @TraceID, 142, 3, @on
exec sp_trace_setevent @TraceID, 142, 12, @on
exec sp_trace_setevent @TraceID, 142, 6, @on
exec sp_trace_setevent @TraceID, 142, 7, @on
exec sp_trace_setevent @TraceID, 142, 8, @on
exec sp_trace_setevent @TraceID, 142, 9, @on
exec sp_trace_setevent @TraceID, 142, 10, @on
exec sp_trace_setevent @TraceID, 142, 21, @on
exec sp_trace_setevent @TraceID, 142, 26, @on
exec sp_trace_setevent @TraceID, 142, 31, @on
exec sp_trace_setevent @TraceID, 142, 38, @on
exec sp_trace_setevent @TraceID, 142, 51, @on
exec sp_trace_setevent @TraceID, 142, 54, @on
exec sp_trace_setevent @TraceID, 142, 60, @on
exec sp_trace_setevent @TraceID, 142, 64, @on
exec sp_trace_setevent @TraceID, 158, 1, @on
exec sp_trace_setevent @TraceID, 158, 9, @on
exec sp_trace_setevent @TraceID, 158, 3, @on
exec sp_trace_setevent @TraceID, 158, 12, @on
exec sp_trace_setevent @TraceID, 158, 6, @on
exec sp_trace_setevent @TraceID, 158, 7, @on
exec sp_trace_setevent @TraceID, 158, 8, @on
exec sp_trace_setevent @TraceID, 158, 10, @on
exec sp_trace_setevent @TraceID, 158, 21, @on
exec sp_trace_setevent @TraceID, 158, 25, @on
exec sp_trace_setevent @TraceID, 158, 26, @on
exec sp_trace_setevent @TraceID, 158, 31, @on
exec sp_trace_setevent @TraceID, 158, 38, @on
exec sp_trace_setevent @TraceID, 158, 40, @on
exec sp_trace_setevent @TraceID, 158, 42, @on
exec sp_trace_setevent @TraceID, 158, 51, @on
exec sp_trace_setevent @TraceID, 158, 54, @on
exec sp_trace_setevent @TraceID, 158, 60, @on
exec sp_trace_setevent @TraceID, 158, 64, @on
exec sp_trace_setevent @TraceID, 159, 1, @on
exec sp_trace_setevent @TraceID, 159, 9, @on
exec sp_trace_setevent @TraceID, 159, 3, @on
exec sp_trace_setevent @TraceID, 159, 11, @on
exec sp_trace_setevent @TraceID, 159, 6, @on
exec sp_trace_setevent @TraceID, 159, 7, @on
exec sp_trace_setevent @TraceID, 159, 8, @on
exec sp_trace_setevent @TraceID, 159, 10, @on
exec sp_trace_setevent @TraceID, 159, 12, @on
exec sp_trace_setevent @TraceID, 159, 21, @on
exec sp_trace_setevent @TraceID, 159, 26, @on
exec sp_trace_setevent @TraceID, 159, 30, @on
exec sp_trace_setevent @TraceID, 159, 34, @on
exec sp_trace_setevent @TraceID, 159, 36, @on
exec sp_trace_setevent @TraceID, 159, 37, @on
exec sp_trace_setevent @TraceID, 159, 38, @on
exec sp_trace_setevent @TraceID, 159, 39, @on
exec sp_trace_setevent @TraceID, 159, 41, @on
exec sp_trace_setevent @TraceID, 159, 46, @on
exec sp_trace_setevent @TraceID, 159, 51, @on
exec sp_trace_setevent @TraceID, 159, 54, @on
exec sp_trace_setevent @TraceID, 159, 60, @on
exec sp_trace_setevent @TraceID, 159, 64, @on


declare @intfilter int
declare @bigintfilter bigint

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'Приложение SQL Server Profiler%'
exec sp_trace_setstatus @TraceID, 1

select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go

/* запустить после того как отправите сообщения в очередь
exec sp_trace_setstatus <ИД Трассы>, 0
exec sp_trace_setstatus <ИД Трассы>, 2
*/




этот скрипт создаст трассу на события брокера, появится файлик C:\temp\BROKER_EVENTS.trc
прикрипите его сюда.
единственное может нужно подкорректировать путь для выходново файла под файловую систему линуха.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946731
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Максим Александровитч,

sys.dm_broker_connections => login_state = 12
если вы конечно правильно идентифицировали нужную строку.

ок давайте проще:
trace

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5 

exec @rc = sp_trace_create @TraceID output, 0, N'C:\temp\BROKER_EVENTS.trc', @maxfilesize, NULL 
if (@rc != 0) goto error

declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 163, 1, @on
exec sp_trace_setevent @TraceID, 163, 9, @on
exec sp_trace_setevent @TraceID, 163, 3, @on
exec sp_trace_setevent @TraceID, 163, 12, @on
exec sp_trace_setevent @TraceID, 163, 6, @on
exec sp_trace_setevent @TraceID, 163, 7, @on
exec sp_trace_setevent @TraceID, 163, 8, @on
exec sp_trace_setevent @TraceID, 163, 10, @on
exec sp_trace_setevent @TraceID, 163, 21, @on
exec sp_trace_setevent @TraceID, 163, 25, @on
exec sp_trace_setevent @TraceID, 163, 26, @on
exec sp_trace_setevent @TraceID, 163, 51, @on
exec sp_trace_setevent @TraceID, 163, 60, @on
exec sp_trace_setevent @TraceID, 163, 64, @on
exec sp_trace_setevent @TraceID, 138, 1, @on
exec sp_trace_setevent @TraceID, 138, 9, @on
exec sp_trace_setevent @TraceID, 138, 3, @on
exec sp_trace_setevent @TraceID, 138, 12, @on
exec sp_trace_setevent @TraceID, 138, 6, @on
exec sp_trace_setevent @TraceID, 138, 7, @on
exec sp_trace_setevent @TraceID, 138, 8, @on
exec sp_trace_setevent @TraceID, 138, 10, @on
exec sp_trace_setevent @TraceID, 138, 21, @on
exec sp_trace_setevent @TraceID, 138, 26, @on
exec sp_trace_setevent @TraceID, 138, 31, @on
exec sp_trace_setevent @TraceID, 138, 34, @on
exec sp_trace_setevent @TraceID, 138, 51, @on
exec sp_trace_setevent @TraceID, 138, 54, @on
exec sp_trace_setevent @TraceID, 138, 60, @on
exec sp_trace_setevent @TraceID, 138, 64, @on
exec sp_trace_setevent @TraceID, 124, 1, @on
exec sp_trace_setevent @TraceID, 124, 9, @on
exec sp_trace_setevent @TraceID, 124, 3, @on
exec sp_trace_setevent @TraceID, 124, 5, @on
exec sp_trace_setevent @TraceID, 124, 6, @on
exec sp_trace_setevent @TraceID, 124, 7, @on
exec sp_trace_setevent @TraceID, 124, 8, @on
exec sp_trace_setevent @TraceID, 124, 10, @on
exec sp_trace_setevent @TraceID, 124, 12, @on
exec sp_trace_setevent @TraceID, 124, 21, @on
exec sp_trace_setevent @TraceID, 124, 26, @on
exec sp_trace_setevent @TraceID, 124, 34, @on
exec sp_trace_setevent @TraceID, 124, 36, @on
exec sp_trace_setevent @TraceID, 124, 37, @on
exec sp_trace_setevent @TraceID, 124, 38, @on
exec sp_trace_setevent @TraceID, 124, 39, @on
exec sp_trace_setevent @TraceID, 124, 40, @on
exec sp_trace_setevent @TraceID, 124, 42, @on
exec sp_trace_setevent @TraceID, 124, 46, @on
exec sp_trace_setevent @TraceID, 124, 47, @on
exec sp_trace_setevent @TraceID, 124, 51, @on
exec sp_trace_setevent @TraceID, 124, 54, @on
exec sp_trace_setevent @TraceID, 124, 60, @on
exec sp_trace_setevent @TraceID, 124, 64, @on
exec sp_trace_setevent @TraceID, 141, 1, @on
exec sp_trace_setevent @TraceID, 141, 9, @on
exec sp_trace_setevent @TraceID, 141, 3, @on
exec sp_trace_setevent @TraceID, 141, 12, @on
exec sp_trace_setevent @TraceID, 141, 6, @on
exec sp_trace_setevent @TraceID, 141, 7, @on
exec sp_trace_setevent @TraceID, 141, 8, @on
exec sp_trace_setevent @TraceID, 141, 10, @on
exec sp_trace_setevent @TraceID, 141, 21, @on
exec sp_trace_setevent @TraceID, 141, 26, @on
exec sp_trace_setevent @TraceID, 141, 31, @on
exec sp_trace_setevent @TraceID, 141, 36, @on
exec sp_trace_setevent @TraceID, 141, 37, @on
exec sp_trace_setevent @TraceID, 141, 38, @on
exec sp_trace_setevent @TraceID, 141, 45, @on
exec sp_trace_setevent @TraceID, 141, 47, @on
exec sp_trace_setevent @TraceID, 141, 51, @on
exec sp_trace_setevent @TraceID, 141, 54, @on
exec sp_trace_setevent @TraceID, 141, 59, @on
exec sp_trace_setevent @TraceID, 141, 60, @on
exec sp_trace_setevent @TraceID, 141, 64, @on
exec sp_trace_setevent @TraceID, 160, 1, @on
exec sp_trace_setevent @TraceID, 160, 9, @on
exec sp_trace_setevent @TraceID, 160, 3, @on
exec sp_trace_setevent @TraceID, 160, 6, @on
exec sp_trace_setevent @TraceID, 160, 7, @on
exec sp_trace_setevent @TraceID, 160, 8, @on
exec sp_trace_setevent @TraceID, 160, 10, @on
exec sp_trace_setevent @TraceID, 160, 12, @on
exec sp_trace_setevent @TraceID, 160, 21, @on
exec sp_trace_setevent @TraceID, 160, 25, @on
exec sp_trace_setevent @TraceID, 160, 26, @on
exec sp_trace_setevent @TraceID, 160, 31, @on
exec sp_trace_setevent @TraceID, 160, 36, @on
exec sp_trace_setevent @TraceID, 160, 37, @on
exec sp_trace_setevent @TraceID, 160, 38, @on
exec sp_trace_setevent @TraceID, 160, 39, @on
exec sp_trace_setevent @TraceID, 160, 40, @on
exec sp_trace_setevent @TraceID, 160, 42, @on
exec sp_trace_setevent @TraceID, 160, 46, @on
exec sp_trace_setevent @TraceID, 160, 51, @on
exec sp_trace_setevent @TraceID, 160, 54, @on
exec sp_trace_setevent @TraceID, 160, 60, @on
exec sp_trace_setevent @TraceID, 160, 64, @on
exec sp_trace_setevent @TraceID, 143, 3, @on
exec sp_trace_setevent @TraceID, 143, 12, @on
exec sp_trace_setevent @TraceID, 143, 6, @on
exec sp_trace_setevent @TraceID, 143, 7, @on
exec sp_trace_setevent @TraceID, 143, 8, @on
exec sp_trace_setevent @TraceID, 143, 9, @on
exec sp_trace_setevent @TraceID, 143, 10, @on
exec sp_trace_setevent @TraceID, 143, 26, @on
exec sp_trace_setevent @TraceID, 143, 51, @on
exec sp_trace_setevent @TraceID, 143, 60, @on
exec sp_trace_setevent @TraceID, 143, 64, @on
exec sp_trace_setevent @TraceID, 149, 3, @on
exec sp_trace_setevent @TraceID, 149, 12, @on
exec sp_trace_setevent @TraceID, 149, 5, @on
exec sp_trace_setevent @TraceID, 149, 6, @on
exec sp_trace_setevent @TraceID, 149, 7, @on
exec sp_trace_setevent @TraceID, 149, 8, @on
exec sp_trace_setevent @TraceID, 149, 9, @on
exec sp_trace_setevent @TraceID, 149, 10, @on
exec sp_trace_setevent @TraceID, 149, 21, @on
exec sp_trace_setevent @TraceID, 149, 25, @on
exec sp_trace_setevent @TraceID, 149, 26, @on
exec sp_trace_setevent @TraceID, 149, 38, @on
exec sp_trace_setevent @TraceID, 149, 51, @on
exec sp_trace_setevent @TraceID, 149, 54, @on
exec sp_trace_setevent @TraceID, 149, 60, @on
exec sp_trace_setevent @TraceID, 149, 64, @on
exec sp_trace_setevent @TraceID, 142, 3, @on
exec sp_trace_setevent @TraceID, 142, 12, @on
exec sp_trace_setevent @TraceID, 142, 6, @on
exec sp_trace_setevent @TraceID, 142, 7, @on
exec sp_trace_setevent @TraceID, 142, 8, @on
exec sp_trace_setevent @TraceID, 142, 9, @on
exec sp_trace_setevent @TraceID, 142, 10, @on
exec sp_trace_setevent @TraceID, 142, 21, @on
exec sp_trace_setevent @TraceID, 142, 26, @on
exec sp_trace_setevent @TraceID, 142, 31, @on
exec sp_trace_setevent @TraceID, 142, 38, @on
exec sp_trace_setevent @TraceID, 142, 51, @on
exec sp_trace_setevent @TraceID, 142, 54, @on
exec sp_trace_setevent @TraceID, 142, 60, @on
exec sp_trace_setevent @TraceID, 142, 64, @on
exec sp_trace_setevent @TraceID, 158, 1, @on
exec sp_trace_setevent @TraceID, 158, 9, @on
exec sp_trace_setevent @TraceID, 158, 3, @on
exec sp_trace_setevent @TraceID, 158, 12, @on
exec sp_trace_setevent @TraceID, 158, 6, @on
exec sp_trace_setevent @TraceID, 158, 7, @on
exec sp_trace_setevent @TraceID, 158, 8, @on
exec sp_trace_setevent @TraceID, 158, 10, @on
exec sp_trace_setevent @TraceID, 158, 21, @on
exec sp_trace_setevent @TraceID, 158, 25, @on
exec sp_trace_setevent @TraceID, 158, 26, @on
exec sp_trace_setevent @TraceID, 158, 31, @on
exec sp_trace_setevent @TraceID, 158, 38, @on
exec sp_trace_setevent @TraceID, 158, 40, @on
exec sp_trace_setevent @TraceID, 158, 42, @on
exec sp_trace_setevent @TraceID, 158, 51, @on
exec sp_trace_setevent @TraceID, 158, 54, @on
exec sp_trace_setevent @TraceID, 158, 60, @on
exec sp_trace_setevent @TraceID, 158, 64, @on
exec sp_trace_setevent @TraceID, 159, 1, @on
exec sp_trace_setevent @TraceID, 159, 9, @on
exec sp_trace_setevent @TraceID, 159, 3, @on
exec sp_trace_setevent @TraceID, 159, 11, @on
exec sp_trace_setevent @TraceID, 159, 6, @on
exec sp_trace_setevent @TraceID, 159, 7, @on
exec sp_trace_setevent @TraceID, 159, 8, @on
exec sp_trace_setevent @TraceID, 159, 10, @on
exec sp_trace_setevent @TraceID, 159, 12, @on
exec sp_trace_setevent @TraceID, 159, 21, @on
exec sp_trace_setevent @TraceID, 159, 26, @on
exec sp_trace_setevent @TraceID, 159, 30, @on
exec sp_trace_setevent @TraceID, 159, 34, @on
exec sp_trace_setevent @TraceID, 159, 36, @on
exec sp_trace_setevent @TraceID, 159, 37, @on
exec sp_trace_setevent @TraceID, 159, 38, @on
exec sp_trace_setevent @TraceID, 159, 39, @on
exec sp_trace_setevent @TraceID, 159, 41, @on
exec sp_trace_setevent @TraceID, 159, 46, @on
exec sp_trace_setevent @TraceID, 159, 51, @on
exec sp_trace_setevent @TraceID, 159, 54, @on
exec sp_trace_setevent @TraceID, 159, 60, @on
exec sp_trace_setevent @TraceID, 159, 64, @on


declare @intfilter int
declare @bigintfilter bigint

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'Приложение SQL Server Profiler%'
exec sp_trace_setstatus @TraceID, 1

select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go

/* запустить после того как отправите сообщения в очередь
exec sp_trace_setstatus <ИД Трассы>, 0
exec sp_trace_setstatus <ИД Трассы>, 2
*/




этот скрипт создаст трассу на события брокера, появится файлик C:\temp\BROKER_EVENTS.trc
прикрипите его сюда.
единственное может нужно подкорректировать путь для выходново файла под файловую систему линуха.



Нет..у меня линуксовый сервак..япотрачу еще часа 3,чтобы этот файл извлечь с него
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946736
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ys.dm_broker_connections => login_state = 12
если вы конечно правильно идентифицировали нужную строку.

Что это означает?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946749
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

вы спросили как я идентифицировал что соединение прошло, я вам ответил. значение 12 для столбца login_state указывает на то что соединение на физическом уровне успешно установленно. так же у вас показатель отправленных данных по этому каналу не нулевой, поэтому что то он на получатель всетаки отправлял.

Нет..у меня линуксовый сервак..япотрачу еще часа 3,чтобы этот файл извлечь с него

вы даете мало данных для идентификации причины возможных ошибок настройки.
их может бне одна и не две, межсерверное взаимодействие брокера действительно достаточно трудоемко.
сильно проще было бы посмотреть трассу нежели тащить информацию из вас клещами по крупицам.

ну хорошо хотите пойти сложным путем, покажите последовательно скрипты какими создавали службы и сертификаты (можно без паролей) и привязки
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946754
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Максим Александровитч,

вы спросили как я идентифицировал что соединение прошло, я вам ответил. значение 12 для столбца login_state указывает на то что соединение на физическом уровне успешно установленно. так же у вас показатель отправленных данных по этому каналу не нулевой, поэтому что то он на получатель всетаки отправлял.

Нет..у меня линуксовый сервак..япотрачу еще часа 3,чтобы этот файл извлечь с него

вы даете мало данных для идентификации причины возможных ошибок настройки.
их может бне одна и не две, межсерверное взаимодействие брокера действительно достаточно трудоемко.
сильно проще было бы посмотреть трассу нежели тащить информацию из вас клещами по крупицам.

ну хорошо хотите пойти сложным путем, покажите последовательно скрипты какими создавали службы и сертификаты (можно без паролей) и привязки

Хорошо..момент

сервер 1

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
CREATE MASTER KEY ENCRYPTION BY PASSWORD =
'Pa$$w0rd';
CREATE CERTIFICATE Endpoint1Cert WITH
SUBJECT = 'For Service Broker endpoint';
CREATE ENDPOINT Endpoint1
STATE = STARTED
AS TCP (LISTENER_PORT = 4022)
FOR SERVICE_BROKER (
 AUTHENTICATION = CERTIFICATE Endpoint1Cert);


BACKUP CERTIFICATE Endpoint1Cert
TO FILE = 'X\Endpoint1Cert.cert';
CREATE LOGIN SBLogin2 WITH PASSWORD = 'Pa$$w0rd';
CREATE USER SBUser2 FOR LOGIN SBLogin2;
CREATE CERTIFICATE Endpoint2Cert
AUTHORIZATION SBUser2
FROM FILE = 'X\Endpoint2Cert.cert';
GRANT CONNECT ON ENDPOINT::Endpoint1 TO SBLogin2



CREATE DATABASE SBDemo1;
ALTER DATABASE SBDemo1 SET ENABLE_BROKER;
ALTER DATABASE SBDemo1 SET TRUSTWORTHY ON;
USE SBDemo1
SELECT service_broker_guid FROM sys.databases
WHERE database_id = DB_ID()
-- D6D29F2F-AAA0-493C-92B0-701E29B10EB7
CREATE MESSAGE TYPE DemoMessageType VALIDATION =
NONE;
CREATE CONTRACT DemoContract (
 DemoMessageType SENT BY ANY);
CREATE QUEUE Queue1;
CREATE SERVICE Service1
ON QUEUE Queue1 (DemoContract);


CREATE ROUTE Service2Route WITH SERVICE_NAME =
'Service2', ADDRESS = 'TCP://0.0.0.0:4022',
BROKER_INSTANCE = 'C6938686-BAA3-41A3-8186-
72D57278FAC9';

CREATE USER DemoUser1 WITHOUT LOGIN;
GRANT CONTROL ON SERVICE::Service1 TO DemoUser1;
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = 'Pa$$w0rd';
CREATE CERTIFICATE DemoUser1Cert
AUTHORIZATION DemoUser1
WITH SUBJECT = 'For SB Service ';
BACKUP CERTIFICATE DemoUser1Cert
TO FILE = 'X\DemoUser1Cert.cert';

CREATE USER DemoUser2 WITHOUT LOGIN
CREATE CERTIFICATE DemoUser2Cert
AUTHORIZATION DemoUser2
FROM FILE = 'X\DemoUser2Cert.cert'
CREATE REMOTE SERVICE BINDING Service2Binding
TO SERVICE 'Service2'
WITH USER = DemoUser2, ANONYMOUS = ON / OFF;


USE SBDemo1
DECLARE @h UNIQUEIDENTIFIER;
BEGIN DIALOG CONVERSATION @h
FROM SERVICE Service1 TO SERVICE 'Service2'
ON CONTRACT DemoContract
WITH ENCRYPTION = OFF;
SEND ON CONVERSATION @h MESSAGE TYPE
DemoMessageType ('test
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946757
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 сервер

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
CREATE ROUTE Service1Route WITH SERVICE_NAME =
'Service1', ADDRESS = 'TCP://0.0.0.0:4022',
BROKER_INSTANCE = 'D6D29F2F-AAA0-493C-92B0-
701E29B10EB7';


GRANT CONNECT TO public
GRANT SEND ON SERVICE::Service2 TO public


CREATE USER DemoUser2 WITHOUT LOGIN
GRANT CONTROL ON SERVICE::Service2 TO DemoUser2
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = 'Pa$$w0rd'
CREATE CERTIFICATE DemoUser2Cert
AUTHORIZATION DemoUser2
WITH SUBJECT = 'For SB Service'
BACKUP CERTIFICATE DemoUser2Cert
TO FILE = 'X\DemoUser2Cert.cert


CREATE USER DemoUser1 WITHOUT LOGIN
CREATE CERTIFICATE DemoUser1Cert
AUTHORIZATION DemoUser1
FROM FILE = 'X\DemoUser1Cert.cert'
CREATE REMOTE SERVICE BINDING Service1Binding
TO SERVICE 'Service1'
WITH USER = DemoUser1, ANONYMOUS = ON / OFF;


USE SBDemo2
DECLARE @h UNIQUEIDENTIFIER, @msg VARCHAR(MAX);
BEGIN TRANSACTION;
 WAITFOR (
 RECEIVE TOP (1) @h = [conversation_handle]
 , @msg = TRY_CONVERT(varchar, [message_body])
 FROM [Queue2]
 ), TIMEOUT 1000
 IF @@ROWCOUNT <= 0 BEGIN
 PRINT 'No messages'
 ROLLBACK TRANSACTION;
 RETURN;
 END;
 PRINT @msg
 END CONVERSATION @h;
COMMIT TRANSACTION;
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946759
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

И нет,я хочу разобратся в этом вопросе и решить его.
Но реально извлечь файл с сервака линукса..трабла..
Если ничего не получится,чтоже начну трассировку,вариантов нет
Но вы уверяете,что сообщение доходит до сервера?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946761
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

4022 доступны и слушаются,смотрел уже..это сразу проверил
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946770
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

ну вы и намесили :)

что у вас за маршруты такие широковещательные? там должны быть ip-адреса обоих серверов.
маршрут серверку как раз и говорит "службу с таким то именем можешь искать по адресу XXX.XXX.XXX.XXX:PORT" если там будут

0.0.0.0:4022 это не значит что сервер всем хостам в сети попытается сообщение отправить.


так же каша в плане безопасности диалога и анонимную проверку разрешили и на основе сертификатов тоже )

если минималистично у вас скрипты должны выглядеть так:

по шагам:
1)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
use master;
create or alter procedure [get_cert]
      @name sysname,
      @encrypt varchar(255),
      @decrypt varchar(255)
as
declare @sql varchar(max) = '';
declare @pub varbinary(max), @pvk varbinary(max);

if isnull(cert_id(@name), 0) = 0 throw 50000, 'certificate if not found';

set @sql = 'create certificate {name} from binary = {pub} with private key (binary = {pvk}, decryption by password = ''{decrypt}'', encryption by password = ''{encrypt}'');';
set @pub = certencoded(cert_id(@name));
set @pvk = certprivatekey(cert_id(@name), @encrypt, @decrypt);

set @sql = replace(@sql, '{name}', quotename(@name));
set @sql = replace(@sql, '{pub}', convert(varchar(max), @pub, 1));
set @sql = replace(@sql, '{pvk}', convert(varchar(max), @pvk, 1));
set @sql = replace(@sql, '{encrypt}', @encrypt);
set @sql = replace(@sql, '{decrypt}', @decrypt);

select @sql;
print @sql;
go



2)
Код: sql
1.
2.
3.
4.
5.
6.
7.
--источник
use master;
create master key encryption by password = 'Pa$$w0rd';
create certificate [auth_cert] encryption by password = 'Pa$$w0rd' with subject = 'authentication certificate';
create endpoint [service_broker_endpoint] state = started as tcp (listener_port = 4022) for service_broker (authentication = certificate [auth_cert]);

exec [get_cert] 'auth_cert', 'Pa$$w0rd', 'Pa$$w0rd'



процедурка выплюнет кусок кода по созданию сертификата
3)
Код: sql
1.
2.
3.
4.
5.
6.
7.
--таргет
use master;
create master key encryption by password = 'Pa$$w0rd';

<вставить кусок кода из второго шага для создания сертификата>;

create endpoint [service_broker_endpoint] state = started as tcp (listener_port = 4022) for service_broker (authentication = certificate [auth_cert]);



4)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
--источник
use [master];
create database [d1];
alter database [d1] set enable_broker with rollback immediate;

use [d1];
create queue [q1];
create service [s1] on queue [q1] ([DEFAULT]);

create certificate [broker_cert] encryption by password = 'Pa$$w0rd' with subject = 'cert1';
<создать процедуру из шага 1 в базе>
exec [get_cert] 'broker_cert', 'Pa$$w0rd', 'Pa$$w0rd';

create user [broker_user] from certificate [broker_cert];
alter authorization on service::s1 to [broker_user];

select [service_broker_guid] from sys.databases where database_id = db_id();



5)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
--таргет
use [master];
create database [d2];
alter database [d2] set enable_broker with rollback immediate;

use [d2];
create queue [q2];
create service [s2] on queue [q2] ([DEFAULT]);

<вставить кусок кода из шага 4 для создания сертификата>;

create user [broker_user] from certificate [broker_cert];
alter authorization on service::s2 to [broker_user];

select [service_broker_guid] from sys.databases where database_id = db_id();



6)
Код: sql
1.
2.
3.
4.
--источник
create route [to_target] with service_name = 's2', address = 'TCP://10.0.40.248:4022', BROKER_INSTANCE = '<guid_d2>'; --взять гуид из шага 5

create remote service binding [bind_to_s2] to service 's2' with user = [broker_user];



7)
Код: sql
1.
2.
--таргет
create route [to_initiator] with service_name = 's1', address = 'TCP://10.0.40.49:4022', BROKER_INSTANCE = '<guid_d1>'; --взять гуид из шага 4
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946772
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Я в 1-е все делал)Конечно мог намесить..ща снесу все роуты и бд и заново
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946774
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

забыл еще нюанс, там нужно владельца сертификата поменять и для привязки указывать именно пользователя владельца.
я так ни разу не пробовал но может прокатит что бы лишних пользователей не создавать

Код: sql
1.
2.
--в обоих инстансах
alter authorization on certificate::[broker_cert] to [broker_user];

;

если с такой комбинацией не прокатит тогда придется в каждой базе создавать пользователя без логина, сделать его владельцем сертификата и дать права на отправку сообщений в очередь
Код: sql
1.
2.
3.
4.
5.
--источник
create user [cert_owner] without login;
alter authorization on certificate [broker_cert] to [cert_owner];
grant send on service::[s1] to [cert_owner];
grant receive on [q1] to [cert_owner];


Код: sql
1.
2.
3.
4.
5.
--таргет
create user [cert_owner] without login;
alter authorization on certificate [broker_cert] to [cert_owner];
grant send on service::[s2] to [cert_owner];
grant receive on [q2] to [cert_owner];
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946775
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff
Максим Александровитч,

забыл еще нюанс, там нужно владельца сертификата поменять и для привязки указывать именно пользователя владельца.
я так ни разу не пробовал но может прокатит что бы лишних пользователей не создавать

Код: sql
1.
2.
--в обоих инстансах
alter authorization on certificate::[broker_cert] to [broker_user];

;

если с такой комбинацией не прокатит тогда придется в каждой базе создавать пользователя без логина, сделать его владельцем сертификата и дать права на отправку сообщений в очередь
Код: sql
1.
2.
3.
4.
5.
--источник
create user [cert_owner] without login;
alter authorization on certificate [broker_cert] to [cert_owner];
grant send on service::[s1] to [cert_owner];
grant receive on [q1] to [cert_owner];


Код: sql
1.
2.
3.
4.
5.
--таргет
create user [cert_owner] without login;
alter authorization on certificate [broker_cert] to [cert_owner];
grant send on service::[s2] to [cert_owner];
grant receive on [q2] to [cert_owner];



Вопрос..Можно ли сделаьт не на основе сертификатов?неудобные они..
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946776
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

можно безопасность диалогов сделать без сертификатов, анонимную.

а вот безопасность транспорта не уверен, для сиквела на платформе windows и в домене - можно.
для линуксового не факт, у вас же домена нет.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946780
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот вам для простоты скрипт создания сертификатов из бэкапа еще:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
create or alter procedure [create_cert_from_backup]
      @name sysname,
      @file sysname,
      @pvk nvarchar(256) = null,
      @encrypt nvarchar(256) = null,
      @decrypt nvarchar(256) = null,
      @is_exec bit = 0
as
declare @sql nvarchar(max) = 'create certificate {name} from file = ''{file}''';
set @sql = replace(@sql, '{name}', quotename(@name));
set @sql = replace(@sql, '{file}', @file);
if @pvk > N'' begin
    set @sql += N' with private key (file=' + quotename(@pvk, nchar(39))
    if @encrypt > N'' set @sql += ', encryption by password = ' + quotename(@encrypt, nchar(39));
    if @decrypt > N'' set @sql += ', decryption by password = ' + quotename(@decrypt, nchar(39));
    set @sql += N');'
end;

if @is_exec = 1 begin
    begin try
        exec (@sql);
    end try
    begin catch
         select error_message();
    end catch
end;

select @sql;
print @sql;



шаг 2 должен тогда выглядеть так:
Код: sql
1.
2.
3.
4.
5.
6.
--источник
use master;
create master key encryption by password = 'Pa$$w0rd';
create certificate [auth_cert] with subject = 'authentication certificate';

backup certificate [auth_cert] to file = 'C:\temp\auth_cert_serv1.cer';



шаг 3
Код: sql
1.
2.
3.
4.
5.
6.
--таргет
use master;
create master key encryption by password = 'Pa$$w0rd';
create certificate [auth_cert] with subject = 'authentication certificate';

backup certificate [auth_cert] to file = 'C:\temp\auth_cert_serv2.cer';



шаг 4
Код: sql
1.
2.
3.
4.
--источник (предварительно скопировав сертификат таргета на инициатор)
exec [create_cert_from_backup] 'auth_cert_serv2', 'C:\temp\auth_cert_serv2.cer';

create endpoint [service_broker_endpoint] state = started as tcp (listener_port = 4022) for service_broker (authentication = certificate [auth_cert_serv2]);



шаг 5
Код: sql
1.
2.
3.
4.
--таргет (предварительно скопировав сертификат инициатора на таргет)
exec [create_cert_from_backup] 'auth_cert_serv1', 'C:\temp\auth_cert_serv1.cer';

create endpoint [service_broker_endpoint] state = started as tcp (listener_port = 4022) for service_broker (authentication = certificate [auth_cert_serv1]);
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946781
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

таргет (предварительно скопировав сертификат инициатора на таргет)

то есть с диска на диск?то есть с машины на машину?

Это линукс..там целая трабла
Как раз в прошлый раз я не корировал

Можно обойтись без сертификата?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946784
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще..много всегоа написали,я запутался.
Можно ли как-то на 1 страницу поместить все шаги?
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946786
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,

я вам уже отвечал, если у вас нет домена то нельзя.

для транспортной безопасности есть только два варианта:
а) аутентификация на основе учетных записей windows - должен быть домен (или если домена нет по крайней мере учетки под которыми запускаются инстансы сиквелов должны иметь одно и тоже имя и пароль, но это не точно никогда не имел дела с ситуацией аутентификации в рабочей группе)

б) аутентификация на основе сертификатов, при этом обмен открытыми ключами обязателен.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946787
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще..много всегоа написали,я запутался.
Можно ли как-то на 1 страницу поместить все шаги?

Максим Александровитч,

сейчас попробую собрать в один пост, подождите.
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946790
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Очень плохо про обмен..чертов линукс..
...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946794
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Александровитч,


1)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
--source
use master
go

create or alter procedure [create_cert_from_backup]
      @name sysname,
      @file sysname,
      @pvk nvarchar(256) = null,
      @encrypt nvarchar(256) = null,
      @decrypt nvarchar(256) = null,
      @is_exec bit = 0
as
declare @sql nvarchar(max) = 'create certificate {name} from file = ''{file}''';
set @sql = replace(@sql, '{name}', quotename(@name));
set @sql = replace(@sql, '{file}', @file);
if @pvk > N'' begin
    set @sql += N' with private key (file=' + quotename(@pvk, nchar(39))
    if @encrypt > N'' set @sql += ', encryption by password = ' + quotename(@encrypt, nchar(39));
    if @decrypt > N'' set @sql += ', decryption by password = ' + quotename(@decrypt, nchar(39));
    set @sql += N');'
end;

if @is_exec = 1 begin
    begin try
        exec (@sql);
    end try
    begin catch
         select error_message();
    end catch
end;

select @sql;
print @sql;
go

use master;
go

create or alter procedure [get_cert]
      @name sysname,
      @encrypt varchar(255),
      @decrypt varchar(255)
as
declare @sql varchar(max) = '';
declare @pub varbinary(max), @pvk varbinary(max);

if isnull(cert_id(@name), 0) = 0 throw 50000, 'certificate if not found', 16;

set @sql = 'create certificate {name} from binary = {pub} with private key (binary = {pvk}, decryption by password = ''{decrypt}'', encryption by password = ''{encrypt}'');';
set @pub = certencoded(cert_id(@name));
set @pvk = certprivatekey(cert_id(@name), @encrypt, @decrypt);

set @sql = replace(@sql, '{name}', quotename(@name));
set @sql = replace(@sql, '{pub}', convert(varchar(max), @pub, 1));
set @sql = replace(@sql, '{pvk}', convert(varchar(max), @pvk, 1));
set @sql = replace(@sql, '{encrypt}', @encrypt);
set @sql = replace(@sql, '{decrypt}', @decrypt);

select @sql;
print @sql;
go



2)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
--target
use master
go

create or alter procedure [create_cert_from_backup]
      @name sysname,
      @file sysname,
      @pvk nvarchar(256) = null,
      @encrypt nvarchar(256) = null,
      @decrypt nvarchar(256) = null,
      @is_exec bit = 0
as
declare @sql nvarchar(max) = 'create certificate {name} from file = ''{file}''';
set @sql = replace(@sql, '{name}', quotename(@name));
set @sql = replace(@sql, '{file}', @file);
if @pvk > N'' begin
    set @sql += N' with private key (file=' + quotename(@pvk, nchar(39))
    if @encrypt > N'' set @sql += ', encryption by password = ' + quotename(@encrypt, nchar(39));
    if @decrypt > N'' set @sql += ', decryption by password = ' + quotename(@decrypt, nchar(39));
    set @sql += N');'
end;

if @is_exec = 1 begin
    begin try
        exec (@sql);
    end try
    begin catch
         select error_message();
    end catch
end;

select @sql;
print @sql;
go

use master;
go

create or alter procedure [get_cert]
      @name sysname,
      @encrypt varchar(255),
      @decrypt varchar(255)
as
declare @sql varchar(max) = '';
declare @pub varbinary(max), @pvk varbinary(max);

if isnull(cert_id(@name), 0) = 0 throw 50000, 'certificate if not found', 16;

set @sql = 'create certificate {name} from binary = {pub} with private key (binary = {pvk}, decryption by password = ''{decrypt}'', encryption by password = ''{encrypt}'');';
set @pub = certencoded(cert_id(@name));
set @pvk = certprivatekey(cert_id(@name), @encrypt, @decrypt);

set @sql = replace(@sql, '{name}', quotename(@name));
set @sql = replace(@sql, '{pub}', convert(varchar(max), @pub, 1));
set @sql = replace(@sql, '{pvk}', convert(varchar(max), @pvk, 1));
set @sql = replace(@sql, '{encrypt}', @encrypt);
set @sql = replace(@sql, '{decrypt}', @decrypt);

select @sql;
print @sql;
go





3)
Код: sql
1.
2.
3.
4.
--source
create master key encryption by password = 'Pa$$w0rd';
create certificate [auth_cert] with subject = 'auth cert';
backup certificate [auth_cert] to file = 'C:\temp\auth_cert_serv1.cer' with private key (file = 'c:\temp\auth_cert_serv2.pvk', encryption by password = 'Pa$$w0rd');




4)
Код: sql
1.
2.
3.
4.
--target
create master key encryption by password = 'Pa$$w0rd';
create certificate [auth_cert] with subject = 'auth cert';
backup certificate [auth_cert] to file = 'C:\temp\auth_cert_serv2.cer' with private key (file = 'c:\temp\auth_cert_serv2.pvk', encryption by password = 'Pa$$w0rd');



5) копируете файл C:\temp\auth_cert_serv1.cer и файл C:\temp\auth_cert_serv1.pvk с источника на таргет
6) копируете файл C:\temp\auth_cert_serv2.cer и файл C:\temp\auth_cert_serv2.pvk с таргета на источник

7)
Код: sql
1.
2.
3.
4.
5.
--source
use master
go
exec create_cert_from_backup 'auth_cert_serv2', 'C:\temp\auth_cert_serv2.cer', 'C:\temp\auth_cert_serv2.pvk', @decrypt = 'Pa$$w0rd', @is_exec=1;
create endpoint [sb] state = started as tcp (listener_port = 4022) for service_broker (authentication = certificate [auth_cert_serv2]);



8)
Код: sql
1.
2.
3.
4.
5.
--target
use master
go
exec create_cert_from_backup 'auth_cert_serv1', 'C:\temp\auth_cert_serv1.cer', 'C:\temp\auth_cert_serv1.pvk', @decrypt = 'Pa$$w0rd', @is_exec=1;
create endpoint [sb] state = started as tcp (listener_port = 4022) for service_broker (authentication = certificate [auth_cert_serv1]);




9)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
--source
use master;
go

create database [d1];
alter database [d1] set enable_broker with rollback imemdiate;
go

use [d1];
go

create queue [q1];
create service [s1] on queue [q1] ([DEFAULT]);
select [service_broker_guid] from sys.databases where database_id = db_id();



10)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
--target
use master;
go

create database [d2];
alter database [d2] set enable_broker with rollback imemdiate;
go

use [d2];
go

create queue [q2];
create service [s2] on queue [q2] ([DEFAULT]);
select [service_broker_guid] from sys.databases where database_id = db_id();



11)
Код: sql
1.
2.
--source
create route [to_s2] with service_name = 's2', address = 'TCP://10.0.0.49:4022', broker_instance = '<guid from step 10>';




12)
Код: sql
1.
2.
--target
create route [to_s1] with service_name = 's1', address = 'TCP://10.0.0.149:4022', broker_instance = '<guid from step 9>';




13)
Код: sql
1.
2.
--target
grant send on service::s2 to public;



14)
Код: sql
1.
2.
3.
4.
5.
6.
7.
--source
declare @h uniqueidentifier;
begin dialog conversation @h
from service [s1] to service N's2'
with encryption = off;

send on conversation @h ('hello');



15)
Код: sql
1.
2.
3.
4.
5.
6.
7.
--target
declare @h uniqueidentifier, @m varbinary(max);
receive top(1) @h = conversation_handle, @m = [message_body] from [q2];
if @h is not null begin
    select cast(@m as varchar(max)) as [message];
    end conversation @h;
end;


...
Рейтинг: 0 / 0
Service Broker для репликации
    #39946797
Максим Александровитч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Спс,ща займусь..может почта есть,удобнее на нее было бы
...
Рейтинг: 0 / 0
25 сообщений из 179, страница 2 из 8
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Service Broker для репликации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]