3

I'm using SQL Server 2012 (localhost only) and SQL Server management Studio (SSMS) to view a table picture that contains binary values (pictures), 928 rows in size which is not large. And only that table has the problem.

It shows the below error, both locally and from another PC, even after restarting SQL Server:

Msg 233, Level 20, State 0, Line 0
A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

Aaron Bertrand
  • 272,866
  • 37
  • 466
  • 490
nam vo
  • 3,271
  • 12
  • 49
  • 76

5 Answers5

4

I would start by checking the consistency of your data. Run a DBCC CheckDB against your DB. You may have corruption in the table. You can also try selecting against msdb.dbo.suspect_pages

Adam Haines
  • 900
  • 5
  • 7
  • There are 962 rows in 32 pages for object "Picture". CHECKTABLE found 0 allocation errors and 4 consistency errors in table 'Picture' (object ID 1125579048). repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKTABLE (Picture). >> should i use it to repair the table ? – nam vo Jul 31 '13 at 15:45
  • First determine the extent of the corruption. What is the index id of the corrupt page? If it is 0 or 1 then you have heap/clustered index corruption, and you need to restore. Otherwise index id > 1, you can rebuild the index offline to get a fresh copy of the clustered index to replace the corrupt nonclustered index. – Adam Haines Jul 31 '13 at 15:55
  • Thanks all. It seems running now – nam vo Jul 31 '13 at 16:04
3

To comment on the accepted answer, running DBCC CheckDB highlighted various errors in the table I couldn't select from. Then DBCC CheckTable(TableName) confirmed it. To fix:

DBCC CheckTable(TableName,repair_allow_data_loss)

However, you'll need the database in Single User mode: right click the database in Object Explorer, Properties, Options, (scroll to bottom), State, Restrict Access -> SINGLE_USER will do this.

Mark
  • 551
  • 6
  • 13
  • Very useful answer! repair data in my case caused corrupted records to be deleted, but at least the db is in a consistent state. – UnDiUdin Feb 17 '16 at 09:47
0

It is clearly stating transport level error.... SO in protocols for the same instance check whether 'Named pipes' is enabled or disabled... if Disabled , enable it and restart the services, issue will be resolved. If enabled , restart the services as it does not take into effect until and unless services are restarted

0

Make sure your firewall is not blocking the Distributed Transaction Coordinator(in and Out)

yazenlala
  • 1
  • 1
0

I've seen this error today while I was running my SP. I was able to figure out by analyzing what has changed.

I added an insert statement and the reason for above hard error was because I accidentally switch two fields: VARCHAR and DATETIME, like this:

INSERT INTO Table
(Id, UserName, UpdatedOn)
VALUES (1, GETDATE(), 'user')
-- values should have been in 1, 3, 2 order

I'd imagine SQL server should have catch this in a nicer manner, but end up with

A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

Anyway, posting as someone may find it helpful.

tgralex
  • 794
  • 4
  • 14
  • I got exactly the same result - trying to put a too-large number into a small money field generated and error and followed by the link being closed. Followed suggestions noted above, but database was intact and no problems. I get the feeling this somehow crashed some thread in SQL Server 2008. – Arkitec Sep 26 '20 at 02:39