microsoft / mssql-docker

Official Microsoft repository for SQL Server in Docker resources
MIT License
1.71k stars 754 forks source link

Full-Text Search is not installed, or a full-text component cannot be loaded #30

Closed sirio3mil closed 7 years ago

sirio3mil commented 7 years ago

Is Full-Text Search supported or installed in linux docker container? Will be?

MSSQL Server
State: 42000
Code: 7609
Message: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]
Full-Text Search is not installed, or a full-text component cannot be loaded.
sirio3mil commented 7 years ago

I just saw that this is an unsupported feature yet

twright-msft commented 7 years ago

Let's leave an open issue here until we deliver it, possibly as early as this month. Question for discussion... FTS will be a separate package - something like mssql-server-fts. It's a fairly large package because it contains all the ifilters. I think it's something like 700 MB. Should we include it in the mssql-server-linux image or so we create an additional image called mssql-server-linux-fts which also contains the FTS package? Right now we are leaning towards including the high availability and agent packages in the mssql-server-linux image but not FTS and then provide a mssql-server-linux-fts package which contains HA, agent, and FTS. Let us know what you think or if you have other ideas!

sirio3mil commented 7 years ago

Thanks for asking.

I think it will be more useful for all create an additional image called mssql-server-linux-fts, FTS is not the same as HA or agent, latter two makes more sense being contained inside main image unlike FTS which is an additional feature that is not used by all.

The ideal would be to be able to parameterize all these features and services, so that each user could start their own container according to needs, but this is more complicated and at this point maybe it's a step ahead.

Great job!

gigatexal commented 7 years ago

@twright-msft I think Microsoft managed images with a set of commonly enabled features will be ideal or some way to parameterize them by passing a flag and then a bundled power shell script modifies the underlying image to enable the role or feature. It's a tall task for sure.

Really looking forward to seeing more features enabled as we would love to use docker and sql server at work

LuisBosquez commented 7 years ago

@gigatexal One thing we're thinking of is creating separate images based on the features that are enabled. For example `mssql-server-linux-fts' or 'mssql-server-linux:fts-'. This could minimize the overhead of the image if the user doesn't require that specific feature. What do you think?

gigatexal commented 7 years ago

@luisbosquez I like that approach. As long as there are images for the common combinations of features that works.

But then also his might be easier: an image that is as close to developer edition of sqlserver as possible (on Linux) as I don't think that image would be too big and would offer the most flexibility and would drive more SQLserver adoption given how well featured it is out of the box and as an end user it would give me more peace of mind to know that the team is focused on one image.

If I had to choose I'd choose the single fatter image with all that my company needs rather than a selection of images.

gigatexal commented 7 years ago

"as close to developer edition of sqlserver as possible" meaning they're turned on / installed (replication, full text, the actual engine, R maybe, SSIS if possible).

twright-msft commented 7 years ago

Proposed plan is to do the following:

OPTION A mssql-server-linux --- this will have the following packages: mssql-server, mssql-server-ha, mssql-server-agent packages.

mssql-server-linux-fts --- this will have all of the above packages + mssql-server-fts.

OPTION B mssql-server-linux --- this will have the following packages: mssql-server.

mssql-server-linux-full --- this will have ALL of the packages: mssql-server, mssql-server-ha, mssql-server-agent, mssql-server-fts.

Note: some of these packages like fts and agent are not available publicly yet. They will likely be released next week. I don't know if we'll have all these packages in the different images by next week yet. Just wanted to get the current thinking out there so that we can get some feedback on it.

gigatexal commented 7 years ago

I vote option B as it would help make the transition for my team much easier and help me make the case easier.

sirio3mil commented 7 years ago

I will always use full package but as I understand OPTION A will be more usefull cuz it have agent package.

somashekarg commented 7 years ago

2017-03-16 12:57:35.57 Server Error: 17113, Severity: 16, State: 1. 2017-03-16 12:57:35.57 Server Error 87(The parameter is incorrect.) occurred while opening file 'C:\var\opt\mssql\data\master.mdf' to obtain configuration information at startup. An invalid startup option might have caused the error. Verify your startup options, and correct or remove them if necessary.

Can anybody has any solution for this. this error in heroku not in docker. In docker it working fine. After pushing to Heroku this error i am getting

LuisBosquez commented 7 years ago

@somashekarg how are you deploying it to heroku? is it running on a VM or a PaaS service? One thing that could be causing this would be the files not having the right owner.

tharindu1st commented 7 years ago

I vote for Option B to be in docker images

@twright-msft Can we know in which days will docker image will be on docker registry ?

twright-msft commented 7 years ago

@tharindu1st - Do you mean - when will a mssql-server-linux-full image be posted to Docker Hub? I'm not sure right now. We are still thinking through the ideal packaging strategy.

Another idea that has come up is for Microsoft to just publish the mssql-server-linux as we are today with just the engine. Then people can create their own Dockerfiles using FROM mssql-server-linux and build their own images adding whatever optional packages make sense for them.

What do folks think about that approach?

sirio3mil commented 7 years ago

@twright-msft I just make my own FROM centos:latest with all packages reynier3mil/centos-mssql-full

Microsoft SQL Server vNext (CTP1.4) - 14.0.405.198 (X64) Mar 11 2017 01:54:12 Copyright (C) 2016 Microsoft Corporation. All rights reserved. on Linux (CentOS Linux 7 (Core))

Regards

twright-msft commented 7 years ago

@sirio3mil Yeah, exactly, that's the idea!

Just FYI in advance - we are going to move all the stuff that the sqlservr.sh (bootstrap.sh in your implementation) does into the sqlservr process startup so that it wont be necessary to call the script anymore as the entrypoint. You will be able to pass everything in as environment variables (or mount a volume containing the mssql.conf file or copy it in during docker build) and then just start /opt/mssql/bin/sqlservr directly. Hope people like that idea! Let us know what you think. We are targeting this change for CTP 2.1 (May).

sirio3mil commented 7 years ago

@twright-msft it would be nice! I'll keep up.

twright-msft commented 7 years ago

I've published the example Dockerfile for adding additional packages. https://github.com/Microsoft/mssql-docker/blob/master/linux/preview/examples/mssql-agent-fts-ha-tools/Dockerfile

avernet commented 7 years ago

@twright-msft Now that this issue is closed, and following on your earlier comment, do you now know if an image with Full-Text Search will soon be posted to Docker Hub?

twright-msft commented 7 years ago

The current plan is to provide only mssql-server-linux with just the engine in it and then if people need different combinations of features they can create their own images using the Dockerfile linked to above as a starting point.

That being said, Meet, one of the PMs on our team, is going to publish a link to a survey to gather some more customer input on this soon.

meet-bhagdev commented 7 years ago

hey guys, as Travis mentioned, we are trying to gather customer feedback around container images.

We would love to learn more about your uses cases from this survey: https://www.surveymonkey.com/r/XXSY536?

Can you guys take a look? If you have any questions about the survey, you can tweet at my @meet_bhagdev or post the question here.

Look forward to hearing from you 👍

bassebaba commented 7 years ago

I made my own Dockerfile and I try to install "mssql-server-agent". The thing that "scares" me is that when doing the install, it also gets and installs/updates the server?

RUN apt-get -y install mssql-server-agent
Get:1 https://packages.microsoft.com/ubuntu/16.04/mssql-server xenial/main amd64 mssql-server amd64 14.0.900.75-1 [172 MB]
Get:2 https://packages.microsoft.com/ubuntu/16.04/mssql-server xenial/main amd64 mssql-server-agent amd64 14.0.900.75-1 [1572 kB]
...
...
+--------------------------------------------------------------+
Please run 'sudo /opt/mssql/bin/mssql-conf setup'
to complete the setup of Microsoft SQL Server
+--------------------------------------------------------------+

Setting up mssql-server-agent (14.0.900.75-1) ...

So eh, whats happening? Why is it modifying the mssql-server package? And also tells me that I need to run the setup command to complete the setup?

And the size went from 1.43GB to 2.38GB, almost 1 gig for the "agent", is that correct?

twright-msft commented 7 years ago

If you don't specify a particular version of the mssql-server-agent package then apt will get the latest. The latest mssql-server-agent package has a dependency on the latest mssql-server package. If you want to install agent and not update the server then you need to specify the version of the mssql-server-agent package which corresponds to the mssql-server package you currently have installed.

bassebaba commented 7 years ago

@twright-msft yeah, of course. That makes sense. But since I ran against the latest docker build (RC2), I didn't expect there to be a later apt-package. How do I figure out & install the correct agent package for a given docker tag?

I used your example a couple of messages up in this thread and that one doesn't seem to make sure they sync up?

EDIT: Sorry, but I'm totally confused. https://github.com/Microsoft/mssql-docker/blob/master/linux/preview/Ubuntu/Dockerfile The dockerfile isn't even installed with apt. So how's the apt-install of the agent going to be lined up with a "manual" install of the server?

This is from the untouched RC2 docker image, started in a container:

:/# dpkg -s mssql-server
dpkg-query: package 'mssql-server' is not installed and no information is available

EDIT2: Well as usual, i did a bassebaba-ugly-workaround:

RUN apt-get download mssql-server-agent
RUN dpkg --force-all -i mssql-server-agent_14.0.900.75-1_amd64.deb

That skips the dependencycheck and just forces the agent install.

I guess this is why I want a Microsoft-made image with the agent included :)

param0091 commented 6 years ago

I'm facing the same issue when using docker on mac using docker pull microsoft/mssql-server-linux:2017-latest and i want to install mssql-server-fts .Is this possible to install fts server for same container.Please help

fhilton commented 6 years ago

I would also like to run microsoft/mssql-server-linux:2017-latest with fts.

I tried the above dockerfile but as mentioned above it tries to re-download mssql-server. I could try and specify the version of fts that corresponds with the docker image so that its not re-downloaded. How do I know what version the "latest" dockerfile is using?

All this to say an image with fts included would be great :)

twright-msft commented 6 years ago

Sorry all. This was a mistake on our part. What's happening is that the the Dockerfile we provided used FROM mssql-server-linux which already had the SQL Server binaries in it. The mssql-server-linux Dockerfile uses COPY to put the files into the image. It doesnt use apt-get install to put the binaries in there thus the package is not "installed". The agent and ha packages have a dependency on the mssql-server package so when they see that the mssql-server package is not there it tries to install the mssql-server package. Duh.

I've posted a new Dockefile which is FROM Ubuntu:16-04 and apt-get installs the mssql-server package and then the other packages. https://github.com/Microsoft/mssql-docker/blob/master/linux/preview/examples/mssql-agent-fts-ha-tools/Dockerfile

fhilton commented 6 years ago

Works now, thanks @twright-msft!