An app to search a database - sql-server

Im not a developer (not a proper one) but always up for an excuse for self-development.
I work in a support team for a reputable software vendor, and we currently use a helpdesk piece of software called iSupport.
- Its not a bad piece of kit, and im not sure if it has been set up badly (trying to find out) but the biggest problem I face (being on the front line as an analyst who uses it 8hrs a day) is its inability to easily search.
A new 'incident' will come in. Client will report some errors in a log, perhaps mention some other keywords when describing his symptoms.
Now I know, I have probably answered a similar problem before (but cant remember the solution) or even more likely, a fellow-analyst may have answered the same question before.
I would like to have the ability to have one search box (think Google) that searches through EVERY incident that has ever been created and return me ALL incidents that contain that keyword.
At the moment the search is very poor - You can take time to set up searches and specify which fields you want to search on, which values to filter by (perhaps by an analyst or category, etc) but this takes time and more often than not, it returns poor results and it would have been easier to try and track it down yourself manually.
All of the data sits in underlying SQL Server tables (have requested a subset of the data).
What im thinking, is creating a separate front-end that is just a basic search box and thats it. This app will point to all the relevant fields in the SQL tables and pull out the relevant records into a table. Once I have the ID for the incident, it is then a simple job to pull out that incident back in the iSupport front end.
I was thinking along the lines of Google Desktop style app (shortcut key brings up the search box).
Now thats as much thinking as ive done. Looking for some advice on where to go next.
I know for instance, that Google Desktop crawls and indexes all your physical files on your machine. Would I have to do something similar for a database as I imagine there maybe a large number of records/fields/tables to search through.
TBH, if it works, im not that fussed (to begin with) if it takes awhile to process the query, as long as it returns relevant results. But ideally id like it to be quick.
Ill leave it at that for now.
Where should I begin?

If .NET is your thing, then Lucene.NET will work well with SQL Server to give you that google search feeling.
The StackOverflow websites use it, you can listen to the SO Podcast where Jeff/Joel bitch about why SQL Server full-text search sucks so much.

I'd suggest this might be a good candidate for a web application - an asp.net / jsf website. This means that you can control it from one machine, but all your colleagues can make use of it without a deployment headache every time you add a new feature...
The incident database is mission critical (critical to your relationship with customers), so if you came to me with this request I would insist that you accessed the database through a user that had select permissions to the appropriate tables, and very little else. This from your point of view is a good thing too - let's you operate knowing you're not going to cock anything up...

The SSMS Tool Pack (an add-in to Management Studio) contains a feature to search Table, View or Database Data.

Have a look into the Full-Text Search functionality of SQL Server.

iSupport includes a full-text search function. Add a 'Global Search' widget to a dashboard you create.

Related

SSMA for Access -- No Objects Were Selected

Is there a version of this app that actually works??? I'm running version 9.1 and it's terrible. Sometimes it will migrate a table but not the data, and 90% of the time it will say "No objects were selected" even though all the tables have check-marks. I can get it to work every so often, and then it just breaks completely.
I am so close to migrating my database from ACCESS 2013 to SSMS 18... if only I could get SSMAfA to work consistantly.
Any help is appreciated.
This is not a baby sitting service.
That tool been around for more then 10+ years. We don't see nor have daily posts here on this rather active SO form in regards to Access. Maybe computers are not just your thing?
Your screen shot shows the selected tables, but does not seem to show the (1/1) for that database.
Like this:
And your 2nd screen shot?
That suggests you not connected corrected to the target sql server database.
As I stated, the tool is not really hard to use, and in IMHO has only one real "gaff". and that issue was already noted to you. (that you have to click on the database in the left tree before the buttons are enabled such as "convert schema" and "migrate data").
And what does the lower left show for the sql server side?
(hit re-connect to sql server so we at least know we have a live connection).
(it should not show off-line)
THEN navigate down the tree to dbo for that database, what do you have?
I see this, but not the tables (I removed them for this post)
So no tables? I SHOULD be able to expand the tables in above, but no tables?
Then right click, and sync
Now I SHOULD not have to do the above - maybe we messed up. But, after I do the sync, I now see the tables on sql server.
eg this:
So, do you see your tables now under the dbo tree ???
If yes, then now try this:
back on top left, make sure you click on (highlight) the database, like this:
Now, if you do NOT see the tables after that right click and sync? Then use convert, load and migrate from the menu.
but, those tables should appear in the dbo tree part lower left. If they do, then you can migrate the data over and over as you wish. (and it will overwrite the data on sql server).
Some more things to try.
Try removing the access database from the project, and then re-add it.
So this: (we now upper left)
Now, save, and then re-add the access database again. See if that helps.
But, before you hit migrate button, do drill down into dbo on the lower left - make sure the tables exist, and are selected.
This is not a hard tool to use, but it does have a "way" it works. I have spent up to 3 days JUST in the tool BEFORE I migrate. In other words, it does have a lot of options, but once you done all that work, then you can re-migrate a again, and that is perhaps the BEST feature of SSMAA.
My only other beef? I find SSMAA is not all that stable - and it has shut down on me more often then I like.
Last but not least?
If you need a LOT more hand holding then what this forum SO can offer?
consider the Access form "Utter Access". All of the industry stall warts, access experts not only hang out on UA, but they also are able in most cases to offer a lot more hand holding. It really is a great Access centric forum, and you might consider asking your questions in that forum.
It can be found here:
https://www.utteraccess.com/
Also, since you noted you ARE using Access 2007, then have you attempted to use the migration system built into Access 2007? is is a LOT easier to use, but then of course lacks MANY options that SSMAA offers. But, it not clear why you not attempted to try the access built in migration system - yet are looking for a different tool to try? Why?
Now, you might have a VERY good reason to not try this alterative I have suggested to you, but you NOT GIVEN a reason why as such.
If SSMAA not working for you, or is above your pay grade, then try the Access one. As I stated, it can be found in Access versions up to 2010, but versions after that don't have a built in migration system to SQL server, and thus SSMAA is the tool of choice.

SQL Server copy data across databases

I'm using SQL Server 2019. I have a "MasterDB" database that is exposed to GUI application.
I'm also going to have as many as 40 user database like "User1DB", "User2DB", etc. And all these user databases will have "exact same" schema and tables.
I have a requirement to copy tables data (overwriting target) from one user database (let's say "User1DB") to the other (say "User2DB"). I need to do this from within "MasterDB" database since the GUI client app going to have access to only this database. How to handle this dynamic situation? I'd prefer static SQL (in form of Stored Procedures) rather than dynamic SQL.
Any suggestion will greatly be appreciated. Thanks.
Check out this question here for transferring data from one database to another.
Aside from that, I agree with #DaleK here. There is no real reason to have a database per user if we are making the assumption that a user is someone who is logging into your frontend app.
I can somewhat understand replicating your schema per customer if you are running some multi-billion record enterprise application where you physically have so much data per customer that it makes sense to split it up, but based on your question that doesn't seem to be the case.
So, if our assumptions are correct, you just need to have a user table, where your fields might be...
UserTable
UserId
FName
LName
EmailAddress
...
Edit:
I see in the comments you are referring to "source control data" ... I suggest you study up on databases and how they're meant to be designed, implemented, and how data should be transacted. There are a ton of great articles and books out there on this with a simple Google search.
If you are looking to replicate your data for backup purposes, look into some data warehouse design principles, maybe creating a separate datastore in a different geographic region for that. The latter is a very complex subject to which I can't go over in this answer, but it sounds like that goes far beyond your current needs. My suggestion is to backtrack and hash out the needs for your application, while understanding some of the fundamentals of databases (or different methods of storing data). Implement something and then see where it can be expanded upon / refactored.
Beyond that, I can't be more detailed than the original question you posted. Hope this helps.

Sitecore Analytics truncation

We have implemented Sitecore for our future site. We are going live soon with our corporate site. We had some testing done on this site to make sure everything was working right. There is some data that was written to the Analytics database due to this.
Now we are looking to get rid of this data and start fresh. We want to go the route of truncating the data out of the tables. Is there a way to do this? I know this could be done with a built-in functionality for the OMS but not the DMS. Also, what tables would be safe to truncate.
Thanks
Personally, I would start fresh by attaching an empty DMS database. You will need to redeploy any goals, page events, campaigns, etc., but it's a much safer option than truncating the tables.
Another thing to consider is that most (if not all) of the reports in the DMS are setup to accept a start and end date. Simply running your reports starting from the launch date may be all you need.
If you decide to truncate the tables, I would focus on any tables that have a Foreign Key relationship to the Visits table (the DMS ships with a Database Diagram that's really handy for stuff like this). Going in order that would be the PageEvents, Pages, and Profiles tables. Then it should be safe to clear out the Visits table.

Good (CMS-based?) platform for simple database apps

I need to implement yet another database website. Let's say roughly 5 tables, 25 columns, and (eventually) thousands to tens of thousands of rows. Easy data entry and maintenance are more important than presentation of the data to non-privileged users. It's a niche site, so performance is not a concern. We'll have no trouble finding somewhere to host it.
So: what's a good platform for this? Intituitively I feel that there ought to be some platform that allows this to be done with no code written - some web version of MS Access. Obviously I'm happy to code business rules, and special logic that distinguishes this from every other database app.
I've looked at Drupal (with Views) and it looks possible, but with quite a bit of effort. Will look at Al Fresco next. A CMS-y platform helps because then you can nicely integrate static content, you get nice styling, plugins, etc etc.
Really good data entry (tracking changes, logging, ability to roll back, mass imports...) would be great. If authorised users could do arbitrary SQL queries (yes, I know...) that would be a big bonus. Image management support a small bonus.
Django is what you are looking for. In fact, you could probably set up what you ask without much coding at all, just configuration.
Once complete, authorised users can add 'rows' with a nice but simple GUI, or, of course, you can batch import via database commands.
I'm a Python newbie, and I've already created 2 Django-based sites. I have created more than a dozen Drupal-based sites, and Django is easier and produces significantly faster sites.
Your need somewhat sits between two chairs : bespoke application and CMS-based. I'd advocate for the CMS approach, if and only if you feel the need for content structure customization will grow in the future, slowly removing the need for direct SQL queries.
I am biased since working with eZ Publish for many years now, but it satisfies the requirements you expressed natively :
Really good data entry (tracking changes, logging, ability to roll back, mass imports...)
[...] Image management support a small bonus.
An idea of the content edition feel can be watched here:
http://ez.no/Demos-Videos/eZ-Publish-Administration-Interface-Video-Tutorial
and you can download and test-drive eZ Publish Community Edition there : http://share.ez.no/latest
It is a PHP-based solution, strong professional community (http://share.ez.no), over 1100 add-ons available on http://projects.ez.no. The underlying libs are mostly relying on Apache Zeta Components, high-quality, robust set of PHP5 libraries.
Last note : the content model is abstracted, meaning you'd not have to create a new table everytime a new type of content should be stored : a simple content class definition from the administration interface, and the rest is taken care of, including the edition interface for the new content type. Might remove the need for hardcore SQL queries ?
Hope it helped,
Drupal can do most of what you need (I don't know of a module that will let you enter arbitrary SQL queries), but you will end up with some overhead of tables and modules you don't really need. It's up to you to decide if that's a problem or not. I don't think the overhead would hurt performance in your case.
The advantages of using Drupal would be the large community, the stability of the platform and the flexibility to add more functionality when needed. Also, the large user base ensures that most code has been tested rather well.
I highly recommend Drupal. It is very simple (also internally codebase is small and clean) it has dosens of possibilities and tremendous support. Once you start with Drupal you will never go to anything else.
Note that I'm not connected with Drupal staff, I've just created dosens of Drupas sites and many of them in just a minutes. My last one took me 2 hrs, see it here http://iPadDevZone.com
UPDATE #1:
It really depends on your DB schema complexity. The best case is that you just use CCK module (part of core now) and create your node type. Node is Drupal name for content. All you do is just web admin your node type fields (text, image, numbers, dates, custom, etc). Then, if user creates content with this node type he/she can enter all the fields which are stored in separate db table fields. This is however hidden for you - if you wish not to know about it - it is just a web gui. Then you choose how the node is presented, which properties as shown and where.
Watch videos in CCK resources section in the bottom of this page: http://drupal.org/project/cck
If you need to do some programming then it is also very easy to use so called PHP code sniplets which are entered as part of your content (node) and executed when the page is displayed.
Drupal has node revisions built in the core. You can see all the versions and roll back if you wish.
You can set the permissions in quite granular level so you can control what your users may or may not.
I would take a look at Symphony. I havn't been using it myself, but it seems like it's really easy to use and to customize!
http://symphony-cms.com/
Seems to me an online database system would be better than a CMS system.
So in addition to what's been posted above:
www.quickbase.com (by Intuit) - think around $150/mo
www.rollbase.com - check on price, full featured
www.rhythmdata.com - easy to set up, but don't think it's got the advanced features you're looking for.
Good luck!
B
I appreciate these answers, but most of them are really platforms that are much better at something else (eg, Drupal really is a CMS, and has some support for custom fields - but it's not at all easy). Since this is a brand new site from scratch, it doesn't really make sense to start with something that does custom database fields as an afterthought, I think.
The closest I've found is Zoho Creator. It really is like "MS Access for Web 2.0" - and even supports importing from Access. The pricing could get expensive though. It feels like it might eventually be quite constraining. I'm still evaluating.
Are there any other products like Zoho Creator?

A glorious reporting tool

I'm in search of a glorious reporting tool. I'm aware that glorious is a subjective term but... here are my desires:
Dead simple for business types
Does not require me to speficy any SQL
Can inspect the database's schema to interpret the users requests without programmer intervention
Costs next to nothing
Can save commonly crafted reports
This sounds an aweful lot like pivot tables, except those would be too complicated for this environment.
Does such a tool exist, or am I doomed to spend the rest of my corporate programming career writing one off reports?
A do-everything report wizard has been the dream of many a programming house.
Step 1 is realize its unnatainable. Step 2 is to find a happy medium between a perfect wizard and a coder writting custom reports all day.
Try creating a company specific wizard. I made one with some handy, "let the user do it" type filtering. I give the user a textbox for each field they want to filter, and let them add comma delimited filters, using % as the wildcard, - for ranges, and constructing the query from those. It also helps to dump results to excel, and let the marketing thugs play with it from there (they usually are pretty handy with excel).
Where it gets hairy is joins. Instead of trying to figure out which tables to join in a report, instead offer them 6-12 standard groupings, each pre-defined grouping should cover just about everything. I did this using a tab UI.
I recommend HTSQL. Queries are simply URLs that follow many predictable conventions (like .../sales?state='OH' for SELECT * FROM sales WHERE state='OH'). Setup is easy, presentation is good-looking. Definitely browse the showcase.
The scary thing about ad-hoc reporting is: you're certain to get an answer. Knowing that the answer is right is when you need us - the guys who understand the schema.
It's when you try to accomodate that by restricting the kinds or scope of reporting you can do to simple filters and such that they get less and less useful.
I recommend trying out (our very own) i-net Clear Reports. In my mind it's glorious (but I admit to being heavily biased... ;).
Check out a demo of our really dead simple ad-hoc reporting component.
Can export into any major format like PDF, HTML, SVG, XLS, etc., as well as into a Java applet viewer.
We offer a free and fully functional report designer.
Installs as a WAR file on your application server or can be used as a library within your own application.
Great technical support (you usually get an answer in minutes or hours rather than days or weeks)
Can read Crystal Reports templates. (for a lot of customers, this is the killer feature since you don't have to re-create all your old Crystal Reports templates)
Great and competitive pricing - effectively costing "less than open source" will cost you if you calculate in support costs (which you definitely should).

Resources